FROM golang:1.21-alpine AS builder WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 GOOS=linux go build \ -ldflags="-s -w -X main.version=$(date +%Y%m%d%H%M%S)" \ -o /out/resume \ cmd/server/main.go FROM alpine:3.19 RUN apk --no-cache add ca-certificates tzdata && \ addgroup -S app && adduser -S app -G app ENV TZ=Asia/Shanghai \ GIN_MODE=release WORKDIR /app COPY --from=builder --chown=app:app /out/resume ./resume COPY --from=builder --chown=app:app /src/templates ./templates COPY --from=builder --chown=app:app /src/config ./config COPY --from=builder --chown=app:app /src/static ./static RUN mkdir -p /app/data /app/logs && \ chown -R app:app /app USER app EXPOSE 8090 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:8090/ || exit 1 CMD ["./resume"]