前言
在搭建frps时,发现官方并没有docker镜像,而网上frps相关docker搭建教程全是基于第三方镜像来搭建,故决定自行创建docker镜像,安全可靠
创建项目目录
创建一个目录以存放配置文件和 Dockerfile
Dockerfile文件
# 使用基础镜像
FROM alpine:latest
# 下载frp
RUN apk add --no-cache wget \
&& wget -O /tmp/frp_0.60.0_linux_amd64.tar.gz https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz \
&& tar -xzf /tmp/frp_0.60.0_linux_amd64.tar.gz -C /usr/local/bin --strip-components=1 \
&& chmod +x /usr/local/bin/frps \
&& rm /tmp/frp_0.60.0_linux_amd64.tar.gz
# 创建配置目录
RUN mkdir -p /etc/frps
# 暴露端口 采用network_mode: host模式 不需要暴露端口
# EXPOSE 7000
# 设置启动命令
CMD ["/usr/local/bin/frps", "-c", "/etc/frps/frps.toml"]
- 路径选择
/usr/local/bin:这个路径通常用于存放用户安装的可执行文件。将 FRPS 安装到这个位置可以确保它在系统 PATH 中,从而可以直接通过命令行调用。
/etc/frps:这个路径是用来存放配置文件的,通常不用于存放可执行文件。 - 可执行文件的管理
将可执行文件放在 /usr/local/bin 中,便于管理和调用。容器中的默认用户通常拥有 /usr/local/bin 的执行权限,因此不需要额外的权限配置。 - 配置文件的分离
FRPS 的配置文件应放在 /etc/frps 中,符合 Linux 的文件系统标准。这个目录专门用于存放系统配置文件。
通过将可执行文件和配置文件分开,可以更好地遵循文件系统层次结构,使得管理和维护更加清晰。
--strip-components=1
:这会移除解压路径中的第一个目录层级(如 frp_0.60.0/),使可执行文件直接放到 /usr/local/bin。
EXPOSE 7000
暴露7000端口 但是后面运行采用network_mode: host模式 不需要暴露端口
构建 Docker 镜像
在项目目录下运行以下命令构建镜像:
docker build -t frps .
常规运行
./frps/frps.toml
配置文件
bindPort = 7000
transport.tls.force = true
auth.token = "token"
webServer.addr = "0.0.0.0"
webServer.port = 7005
webServer.user = "admin"
webServer.password = "密码"
客户端(这里不用管,放着这是保存一下我的配置)
transport.tls.enable = true
serverAddr = "23.185.200.121"
serverPort = 7000
auth.token = "token"
[[proxies]]
name = "name"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8023
remotePort = 8023
services:
frps:
restart: always
network_mode: host
volumes:
- './frps/frps.toml:/etc/frps/frps.toml'
container_name: frps
image: i80980/frps:v0.60.0
发布到 Docker Hub
1. 注册 Docker Hub 账号
首先,你需要在 Docker Hub 上注册一个账号。如果你已经有账号,请跳过此步骤。
2. 登录 Docker Hub
在你本地的终端中,使用 Docker CLI 登录 Docker Hub:
docker login
输入你在 Docker Hub 上的用户名和密码。
3. 给 Docker 镜像打标签
你需要给你的镜像打上标签,以便将它上传到 Docker Hub。假设你的 Docker Hub 用户名是 yourdockerhubusername
,你可以使用以下命令给镜像打标签:
docker tag frps i80980/frps:v0.60.0
这里的 latest
是标签名称,你可以用其他的版本号替换它,如 v1.0.0
。
4. 上传镜像到 Docker Hub
执行以下命令,将镜像推送到 Docker Hub:
docker push i80980/frps:v0.60.0
这将把你的镜像上传到 Docker Hub。如果上传成功,你应该能在 Docker Hub 的控制台看到该镜像。
5. 自动化构建(可选)
你也可以将你的 Dockerfile 推送到 GitHub 或其他 Git 代码仓库,并在 Docker Hub 上设置自动化构建。这样,当你更新仓库时,Docker Hub 会自动重新构建并发布最新的镜像。
步骤如下:
- 将你的 Dockerfile 和相关配置文件上传到 GitHub。
- 在 Docker Hub 中,关联你的 GitHub 仓库,并设置自动构建。
- 每次代码更新后,Docker Hub 将自动构建新的镜像。