# 使用基于 Alpine 的 Go 镜像作为构建阶段 FROM golang:1.23-alpine AS builder # 设置工作目录 WORKDIR /app # 使用 apk 安装 SQLite 的开发依赖 RUN apk add --no-cache gcc g++ musl-dev sqlite-dev # 设置 Go 模块代理(可选,用于国内环境) ENV GOPROXY=https://goproxy.cn,direct # 将 go.mod 和 go.sum 复制到容器中 COPY go.mod go.sum ./ # 下载依赖 RUN go mod download # 将项目代码复制到容器中 COPY . . # 启用 CGO,并针对 Linux 平台编译二进制文件 RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o main cmd/main.go # 使用轻量级的运行镜像 FROM alpine:latest # 安装 SQLite 的运行时依赖 RUN apk add --no-cache sqlite-libs ca-certificates # 设置工作目录 WORKDIR /app # 从构建阶段复制二进制文件 COPY --from=builder /app/main . COPY config.yaml . COPY data/json_files ./data/json_files # 确保二进制文件可执行 RUN chmod +x main # 暴露服务端口 EXPOSE 8080 # 设置默认启动命令 CMD ["./main", "server"]