Dockerfile 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # 使用官方的 Go 镜像作为构建阶段
  2. FROM golang:1.23 AS builder
  3. # 设置工作目录
  4. WORKDIR /app
  5. # 安装 SQLite 的开发依赖和 glibc 编译工具链
  6. RUN apk add --no-cache gcc g++ musl-dev sqlite-dev
  7. # 设置 Go 模块代理(可选,用于国内环境)
  8. ENV GOPROXY=https://goproxy.cn,direct
  9. # 将 go.mod 和 go.sum 复制到容器中
  10. COPY go.mod go.sum ./
  11. # 下载依赖
  12. RUN go mod download
  13. # 将项目代码复制到容器中
  14. COPY . .
  15. # 启用 CGO,并针对 Linux 平台编译二进制文件
  16. RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o main cmd/main.go
  17. # 使用轻量级的运行镜像
  18. FROM alpine:latest
  19. # 安装 SQLite 的运行时依赖
  20. RUN apk add --no-cache libsqlite3-dev ca-certificates
  21. # 设置工作目录
  22. WORKDIR /app
  23. # 从构建阶段复制二进制文件
  24. COPY --from=builder /app/main .
  25. COPY config.yaml .
  26. COPY data/json_files ./data/json_files
  27. # 确保二进制文件可执行
  28. RUN chmod +x main
  29. # 暴露服务端口
  30. EXPOSE 8080
  31. # 设置默认启动命令
  32. CMD ["./main", "server"]