# 使用官方 Go 镜像作为构建阶段 FROM golang:1.22 AS builder # 个别 go mod 依赖,换源获取。 ENV GOPROXY=https://goproxy.cn,direct WORKDIR /app # 复制 go.mod 和 go.sum 文件 COPY go.mod go.sum ./ RUN go mod download # 复制源代码并构建 COPY . . # 设置环境变量以确保静态编译 ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64 # 构建静态链接的二进制文件 RUN go build -ldflags="-s -w" -a -o myapp . # 使用轻量级的 Alpine 镜像作为最终镜像 FROM alpine:latest WORKDIR /root/ # 安装必要的运行时库(如果需要) # 对于完全静态的二进制文件,这一步可以省略 # 但是为了保险起见,可以安装一些基本工具 # RUN apk add --no-cache ca-certificates # 这一步无权 # 复制构建好的二进制文件 COPY --from=builder /app/myapp . # 需要的文件夹 COPY ./config ./config RUN mkdir -p store/logs && mkdir -p public # 确保二进制文件具有可执行权限 RUN chmod +x myapp # 暴露 端口 EXPOSE 20201 # 运行应用 CMD ["./myapp"] # TEST 挂起效果,测试用 # CMD ["tail", "-f", "/dev/null"]