frps端同步frpc2.4-LTS的全套代码库的设计逻辑

This commit is contained in:
2026-08-01 19:31:03 +08:00
parent ccdd5b0725
commit 3214215032
10 changed files with 988 additions and 455 deletions
+27 -11
View File
@@ -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"]