frps端同步frpc2.4-LTS的全套代码库的设计逻辑
This commit is contained in:
+27
-11
@@ -1,38 +1,54 @@
|
||||
# ============================================================
|
||||
# 构建阶段
|
||||
# 多阶段构建
|
||||
# ============================================================
|
||||
|
||||
# ---------- 构建阶段 ----------
|
||||
FROM golang:alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 复制依赖文件(如果存在 go.sum 则一并复制)
|
||||
# 复制依赖文件(兼容 go.sum 可能不存在的情况)
|
||||
COPY go.mod go.sum* ./
|
||||
|
||||
# 修复 go.mod 版本过高问题(frpc 用 1.26.5,容器内 go 版本可能较低)
|
||||
# 将 go 1.2x 降级为 go 1.21,确保兼容性
|
||||
RUN sed -i 's/go 1.2[6-9].*/go 1.21/' go.mod && go mod tidy 2>/dev/null || true
|
||||
|
||||
# 设置 Go 代理(国内加速)
|
||||
RUN go env -w GOPROXY=https://goproxy.cn,direct
|
||||
|
||||
# 下载依赖
|
||||
RUN go mod download
|
||||
|
||||
# 复制全部源码(包含 bin/ 和 static/)
|
||||
COPY . .
|
||||
|
||||
# 编译 Linux 版(CGO_ENABLED=0 静态编译,-p 1 降低内存峰值)
|
||||
# 静态编译 Linux 版本
|
||||
# -p 1 降低并发编译内存峰值(适合低配机器)
|
||||
# -s -w 去除调试信息,减小二进制体积
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -p 1 -ldflags="-s -w" -o frps-console .
|
||||
|
||||
# ============================================================
|
||||
# 运行阶段
|
||||
# ============================================================
|
||||
# ---------- 运行阶段 ----------
|
||||
FROM alpine:latest
|
||||
|
||||
# 安装 ca-certificates 和 tzdata(确保 HTTPS 和时区正常)
|
||||
RUN apk --no-cache add ca-certificates tzdata
|
||||
# 安装必要工具
|
||||
# - ca-certificates: HTTPS 请求(frps 需要调用 Dashboard API)
|
||||
# - tzdata: 时区支持
|
||||
# - sqlite: 用于 deploy.sh 中检查数据库状态
|
||||
RUN apk --no-cache add ca-certificates tzdata sqlite
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 从构建阶段复制编译好的二进制
|
||||
COPY --from=builder /app/frps-console /app/frps-console
|
||||
|
||||
# 创建数据目录(用于持久化 db 和日志)
|
||||
# 复制前端静态文件(从构建阶段)
|
||||
COPY --from=builder /app/static/ /app/static/
|
||||
|
||||
# 创建数据目录(用于持久化 db、配置、日志、pid)
|
||||
RUN mkdir -p /app/data
|
||||
|
||||
# 暴露端口(与 deploy.sh 中默认端口一致)
|
||||
# 暴露端口(与 deploy.sh 中 DEFAULT_PORT 保持一致)
|
||||
EXPOSE 9365
|
||||
|
||||
# 环境变量(可被 docker run -e 覆盖)
|
||||
@@ -42,5 +58,5 @@ ENV TZ=Asia/Shanghai
|
||||
# 数据卷(持久化数据库、配置、日志)
|
||||
VOLUME ["/app/data"]
|
||||
|
||||
# 启动
|
||||
# 启动(使用 exec 确保信号正确传递)
|
||||
ENTRYPOINT ["/app/frps-console"]
|
||||
Reference in New Issue
Block a user