diff --git a/Dockerfile b/Dockerfile index 41dd3dd..a0ca689 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,48 +1,47 @@ -# ============================================================ -# 构建阶段 -# ============================================================ +# 多阶段构建 FROM golang:alpine AS builder WORKDIR /app # 复制依赖文件 COPY go.mod go.sum ./ + +# 降级 go.mod 并整理依赖 +RUN sed -i 's/go 1.2[6-9].*/go 1.21/' go.mod && \ + go mod tidy + +# 设置代理 RUN go env -w GOPROXY=https://goproxy.cn,direct + +# 下载依赖 RUN go mod download -# 复制源码(确保 bin/ 和 static/ 目录存在) +# 复制全部源码(包括 version.ini、static 等) COPY . . -# 编译 Linux 版(CGO_ENABLED=0 保证静态编译) +# 编译 RUN CGO_ENABLED=0 GOOS=linux go build \ -ldflags="-s -w" \ -o frpc-console . -# ============================================================ -# 运行阶段 -# ============================================================ +# 【调试】确认二进制文件已生成 +RUN ls -l /app/frpc-console + +# 运行镜像 FROM alpine:latest -# 安装 ca-certificates 和 tzdata(确保 HTTPS 和时区正常) +# 安装工具 RUN apk --no-cache add ca-certificates tzdata sqlite WORKDIR /app -# 从构建阶段复制编译好的二进制 +# 从构建阶段复制二进制 COPY --from=builder /app/frpc-console /app/frpc-console -# 创建数据目录(用于持久化 db 和日志) -RUN mkdir -p /app/data +# 复制静态文件(从本地直接复制,确保存在) +COPY static/ /app/static/ -# 暴露端口(默认 9300) +# 暴露端口 EXPOSE 9300 -# 环境变量 -ENV PORT=9300 -ENV TZ=Asia/Shanghai - -# 数据卷(持久化数据库、配置、日志) -VOLUME ["/app/data"] - -# 启动 ENTRYPOINT ["/app/frpc-console"] \ No newline at end of file