Files
Blog/Dockerfile
2025-10-25 08:43:42 +08:00

41 lines
800 B
Docker

# Build stage
FROM golang:1.24.4-alpine AS builder
# Install build dependencies
RUN apk add --no-cache git
# Set working directory
WORKDIR /build
# Copy go mod files from root directory
COPY go.mod go.sum ./
# Download dependencies
RUN go mod download
# Copy the entire app directory to maintain the module structure
COPY app/ ./app/
# Build the application from the app directory
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o blog ./app/blog.go
# Production stage
FROM alpine:latest
# Install ca-certificates for HTTPS
RUN apk --no-cache add ca-certificates
WORKDIR /root/
# Copy binary from builder
COPY --from=builder /build/blog .
# Copy config file
COPY app/etc/blog.yaml ./etc/
# Expose port
EXPOSE 8888
# Run the application
CMD ["./blog", "-f", "etc/blog.yaml"]