记录第一次创建Docker镜像并发布:搭建frps镜像

作者:Xie 日期:2024/09/26 分类:技术分享

前言

在搭建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"]
  1. 路径选择
    /usr/local/bin:这个路径通常用于存放用户安装的可执行文件。将 FRPS 安装到这个位置可以确保它在系统 PATH 中,从而可以直接通过命令行调用。
    /etc/frps:这个路径是用来存放配置文件的,通常不用于存放可执行文件。
  2. 可执行文件的管理
    将可执行文件放在 /usr/local/bin 中,便于管理和调用。容器中的默认用户通常拥有 /usr/local/bin 的执行权限,因此不需要额外的权限配置。
  3. 配置文件的分离
    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 会自动重新构建并发布最新的镜像。

步骤如下:

  1. 将你的 Dockerfile 和相关配置文件上传到 GitHub。
  2. 在 Docker Hub 中,关联你的 GitHub 仓库,并设置自动构建。
  3. 每次代码更新后,Docker Hub 将自动构建新的镜像。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注