Files
dance-lessons-coach/Dockerfile
Gabriel Radureau 849383d6c8
Some checks failed
CI/CD Pipeline / Build Docker Cache (push) Successful in 17s
Docker Push / Docker Push (push) Successful in 4m57s
CI/CD Pipeline / CI Pipeline (push) Failing after 6m18s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
🤖 ci(docker): auto-build on push to main + fix root Dockerfile swag step (#94)
Co-authored-by: Gabriel Radureau <arcodange@gmail.com>
Co-committed-by: Gabriel Radureau <arcodange@gmail.com>
2026-05-06 07:06:09 +02:00

44 lines
958 B
Docker

# Build dance-lessons-coach Docker image
FROM golang:1.26-alpine AS builder
# Install git (required for go mod download)
RUN apk add --no-cache git
# Set working directory
WORKDIR /app
# Copy go module files and download dependencies
COPY go.mod go.sum ./
RUN go mod download
# Copy entire source code
COPY . .
# Generate Swagger documentation if not already present
# (pkg/server/docs/ is gitignored ; the binary //go:embed depends on it)
RUN if [ ! -f pkg/server/docs/swagger.json ]; then \
go install github.com/swaggo/swag/cmd/swag@latest && \
cd pkg/server && go generate ; \
fi
# Build the server binary
RUN go build -o app ./cmd/server
# Final lightweight stage
FROM alpine:latest
# Install CA certificates for HTTPS
RUN apk --no-cache add ca-certificates
# Set working directory
WORKDIR /root/
# Copy binary from builder stage
COPY --from=builder /app/app .
# Expose port 8080
EXPOSE 8080
# Start the server
CMD ["./app"]