Dockerfile
FROM golang:alpine AS builder
ENV CGO_ENABLED 0
ENV GOPROXY https://goproxy.cn,direct
RUN apk update --no-cache && apk add --no-cache tzdata
WORKDIR /build
ADD go.mod .
ADD go.sum .
RUN go mod download
COPY . .
RUN go build -ldflags="-s -w" -o /app/main ./main.go
FROM alpine
RUN apk update --no-cache && apk add --no-cache ca-certificates
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
ENV TZ Asia/Shanghai
WORKDIR /app
COPY --from=builder /app/main /app/main
CMD ["./main"]
- 默认禁用了 cgo
- 启用了 GOPROXY 加速 go mod download
- 去掉了调试信息 -ldflags="-s -w" 以减小镜像尺寸
- 安装了 ca-certificates,这样使用 TLS 证书就没问题了
- tzdata 在 builder 镜像安装,并在最终镜像只拷贝了需要的时区
- 自动设置了本地时区,这样我们在日志里看到的是北京时间了
Docker-compose.yaml
version: '3'
services:
app:
build: .
ports:
- "8081:8081"
redis:
image: redis