从 stilleshan/frps 移植,镜像与脚本均改为使用本仓库
laosan-xx/frp 的 Release 产物(frp_<version>_linux_<arch>.tar.gz)。
| 文件 | 说明 |
|---|---|
Dockerfile | frps 镜像构建文件,基于 alpine,支持 amd64/arm64/arm |
frps.toml | frps 默认配置,构建镜像时打入 /frp,也可挂载覆盖 |
frps.service | systemd 服务文件 |
frps_linux_install.sh | Linux 一键安装脚本(systemd 托管) |
frps_linux_uninstall.sh | Linux 一键卸载脚本 |
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
wget https://raw.githubusercontent.com/laosan-xx/frp/main/docker/frps/frps_linux_install.sh \
&& chmod +x frps_linux_install.sh && ./frps_linux_install.sh
# 国内镜像
wget https://ghfast.top/https://raw.githubusercontent.com/laosan-xx/frp/main/docker/frps/frps_linux_install.sh \
&& chmod +x frps_linux_install.sh && ./frps_linux_install.sh
安装后按需修改配置并重启服务:
vi /usr/local/frp/frps.toml
sudo systemctl restart frps
卸载:
wget https://raw.githubusercontent.com/laosan-xx/frp/main/docker/frps/frps_linux_uninstall.sh \
&& chmod +x frps_linux_uninstall.sh && ./frps_linux_uninstall.sh
服务管理:
sudo systemctl start frps # 启动
sudo systemctl enable frps # 开机自启
sudo systemctl status frps # 状态
sudo systemctl restart frps # 重启
sudo systemctl stop frps # 停止
.github/workflows/docker-frps.yml 的触发方式:
workflow_run:goreleaser 工作流成功结束后才启动,此时 Release 产物已上传,不存在"产物还没生成就下载"的问题workflow_dispatch:version 与 latest 均可留空自动推断版本号解析顺序(无需手改):
versionv* 去掉 v;手动 dispatch 时按 commit 反查该 commit 上的 tag)laosan-xx/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/frp 的 Release:frp_0.80.9_linux_<arch>.tar.gzdocker-frps.yml,自动取该版本构建并推送镜像因此无需手动修改以下位置的版本号:
pkg/util/version/version.go(CI 自动写入;本地开发时才需要手动维护)docker/frps/Dockerfile:ARG VERSION=latest,未传参时自动查询最新 Releasedocker/frps/frps_linux_install.sh:FRP_VERSION 留空即自动获取最新 Release 版本,也可显式指定 FRP_VERSION=0.80.8 安装特定版本Content type
Image
Digest
sha256:7e009d484…
Size
14.9 MB
Last updated
3 days ago
docker pull xxhy1989/frps