从 stilleshan/frps 移植,镜像改为使用本仓库
laosan-xx/my-frp 的 Release 产物(frp_<version>_linux_<arch>.tar.gz)。
| 文件 | 说明 |
|---|---|
Dockerfile | frps 镜像构建文件,基于 alpine,支持 amd64/arm64/arm |
frps.toml | frps 默认配置,构建镜像时打入 /frp,也可挂载覆盖 |
cd docker/frps
# 默认版本 0.80.8,可用 --build-arg 覆盖
docker build -t laosan-xx/frps:0.80.8 .
docker build --build-arg VERSION=0.80.8 -t laosan-xx/frps:0.80.8 .
需先准备好 frps.toml,再挂载启动,避免配置错误导致容器循环重启:
docker run -d --name=frps --restart=always \
--network host \
-v /root/frps/frps.toml:/frp/frps.toml \
laosan-xx/frps:0.80.8
修改配置后重启生效:
vi /root/frps/frps.toml
docker restart frps
.github/workflows/docker-frps.yml 的触发方式:
workflow_run:goreleaser 工作流成功结束后才启动,此时 Release 产物已上传,不存在"产物还没生成就下载"的问题workflow_dispatch:version 与 latest 均可留空自动推断版本号解析顺序(无需手改):
versionv* 去掉 v;手动 dispatch 时按 commit 反查该 commit 上的 tag)laosan-xx/my-frp 的最新 Release镜像标签:始终同时推送 <namespace>/frps:<version> 与 <namespace>/frps:latest。
命名空间优先级:手动输入的 namespace > 仓库 Variables 的 DOCKER_NAMESPACE > DOCKER_USERNAME(登录名可能是邮箱,与 Docker ID 不一致时用 Variables 指定)。
构建前保留一次轻量校验:对 frp_<version>_linux_amd64.tar.gz 与 frp_<version>_linux_arm64.tar.gz 的公开下载 URL 做一次 HTTP 探测,非 200 则报错退出。
其它细节:
linux/amd64、linux/arm64(QEMU + buildx 多架构 manifest)<namespace>/frps:<version> 与 <namespace>/frps:latestdocker/frps/README.md 同步到 Docker Hub 仓库描述DOCKER_USERNAME、DOCKER_PASSWORD(缺失时工作流会立即报错退出)发版只需在源码仓库打 tag,版本号会自动贯穿到产物和镜像:
v0.80.9 → 触发 .github/workflows/goreleaser.yml;也可手动 dispatch,填写 tag 输入框(或在 UI 的 Use workflow from 选择该 tag)Sync version from tag 步骤:把 tag 版本写入 pkg/util/version/version.go,hack/package.sh 用 ./bin/frps --version 读取它命名产物laosan-xx/my-frp 的 Release:frp_0.80.9_linux_<arch>.tar.gzdocker-frps.yml,自动取该版本构建并推送镜像因此无需手动修改以下位置的版本号:
pkg/util/version/version.go(CI 自动写入;本地开发时才需要手动维护)docker/frps/Dockerfile:ARG VERSION=latest,未传参时自动查询最新 ReleaseContent type
Image
Digest
sha256:e0d9236d0…
Size
15.1 MB
Last updated
9 days ago
docker pull xxhy1989/frps