|
@@ -1,4 +1,4 @@
|
|
|
-# 使用官方的 Go 镜像作为基础镜像
|
|
|
+# 使用官方的 Go 镜像作为构建阶段
|
|
|
FROM golang:1.23 AS builder
|
|
|
|
|
|
# 设置工作目录
|
|
@@ -13,22 +13,28 @@ RUN go mod download
|
|
|
# 将项目代码复制到容器中
|
|
|
COPY . .
|
|
|
|
|
|
-# 构建可执行文件
|
|
|
-RUN go build -o main cmd/main.go
|
|
|
+# 设置 CGO_ENABLED=0 和目标平台为 Linux,编译静态二进制文件
|
|
|
+RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main cmd/main.go
|
|
|
|
|
|
-# 使用轻量级的基础镜像运行
|
|
|
+# 使用轻量级的运行镜像
|
|
|
FROM alpine:latest
|
|
|
|
|
|
+# 安装必要的动态库
|
|
|
+RUN apk --no-cache add 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"]
|