# Dockerfile 示例 # 展示如何构建包含迁移工具的 Go 应用 # ===== 构建阶段 ===== FROM golang:1.21 as builder WORKDIR /app COPY go.mod go.sum ./ RUN go mod download COPY . . # 编译应用和迁移工具 RUN go build -o bin/server cmd/server/main.go RUN go build -o bin/migrate cmd/migrate/main.go # ===== 运行阶段 ===== FROM debian:bookworm-slim WORKDIR /app # 安装运行时依赖 RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* # 复制二进制文件和迁移文件 COPY --from=builder /app/bin/server . COPY --from=builder /app/bin/migrate . COPY --from=builder /app/migrations ./migrations EXPOSE 8080 # 启动:先执行迁移,再启动应用 CMD ["sh", "-c", "./migrate up && ./server"] # 注意: # 1. 配置文件通过 docker-compose volumes 挂载,不打包进镜像 # 2. 镜像只包含二进制文件和迁移SQL文件 # 3. 配置文件在运行时提供,更安全、更灵活