Dockerfile 851 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # 使用官方的 Go 镜像作为构建阶段
  2. FROM golang:1.23 AS builder
  3. # 设置工作目录
  4. WORKDIR /app
  5. # 将 go.mod 和 go.sum 复制到容器中
  6. COPY go.mod go.sum ./
  7. # 下载依赖
  8. RUN go mod download
  9. # 将项目代码复制到容器中
  10. COPY . .
  11. # 设置 CGO_ENABLED=0 和目标平台为 Linux,编译静态二进制文件
  12. RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main cmd/main.go
  13. # 使用轻量级的运行镜像
  14. FROM alpine:latest
  15. # 安装必要的动态库
  16. RUN apk --no-cache add ca-certificates
  17. # 设置工作目录
  18. WORKDIR /app
  19. # 从构建阶段复制二进制文件和其他必要文件
  20. COPY --from=builder /app/main .
  21. COPY config.yaml .
  22. COPY data/json_files ./data/json_files
  23. # 确保二进制文件可执行
  24. RUN chmod +x main
  25. # 暴露服务端口
  26. EXPOSE 8080
  27. # 设置默认启动命令
  28. CMD ["./main", "server"]