容器化 FRP 使用方案

2021-10-09 23:41:03 字數 3374 閱讀 3988

最近在折騰過程中,使用到了 frp 這款軟體,碰巧作者在幾天前更新的v0.34.1版本只發布了容器版本,並未像之前一樣發布多種編譯版本。

距離上一次寫 frp 相關的內容,已經過去了兩年。本文就基於官方容器版本,介紹該軟體的簡單使用方法吧。

首先在服務端找乙個合適的目錄,建立frps.ini配置檔案,考慮到後續的便捷使用,這裡我們使用環境變數來對配置進行抽象。

[common]

bind_port = }

token = }

dashboard_addr = 0.0.0.0

dashboard_port = }

dashboard_user = }

dashboard_pwd = }

接著,就可以在docker-compose.yml中使用環境變數來對程式的服務端進行「動態」配置了:

version: "3.7"

services:

frps:

restart: always

container_name: frps

image: fatedier/frps:v0.34.1

volumes:

- /etc/localtime:/etc/localtime:ro

- /etc/timezone:/etc/timezone:ro

ports:

- 9870:9870

- 7890:7890

- yourport:yourport

environment:

- frp_server_port=9870

- frp_server_token=cmw9vicpy1fz

- frp_admin_port=7890

- frp_admin_user=soulteary

- frp_admin_pass=soulteary

networks:

- frps

logging:

driver: "json-file"

options:

max-size: "1m"

# docker network create frps

networks:

frps:

external: true

上面配置中需要注意的是,ports欄位中,目前只宣告了frp_server_port服務端通訊介面和frp_admin_port服務端管理介面,所以我們需要再根據自己的情況新增乙個/一些應用介面。

當然,更好的方案是搭配 traefik 使用服務發現來對外提供服務。後面有機會,我再行文詳述。

在服務端使用docker-compose up -d啟動服務,如果順利的話,將看到類似下面的日誌:

frps    | 2020/10/04 19:52:27 [i] [service.go:190] frps tcp listen on 0.0.0.0:9870

frps | 2020/10/04 19:52:27 [i] [service.go:289] dashboard listen on 0.0.0.0:9870

frps | 2020/10/04 19:52:27 [i] [root.go:212] start frps success

接著我們來配置客戶端。

同服務端一樣,我們先確定客戶端配置frpc.ini的「架子」:

[common]

server_addr = }

server_port = }

token = }

type = tcp

接著是完成客戶端的docker-compose.yml配置檔案:

version: "3.7"

services:

frpc:

restart: always

image: fatedier/frpc:v0.34.1

volumes:

- /etc/localtime:/etc/localtime:ro

- /etc/timezone:/etc/timezone:ro

environment:

- frp_server_addr=123.456.789.012

- frp_server_port=9870

- frp_server_token=cmw9vicpy1fz

networks:

- frpc

logging:

driver: "json-file"

options:

max-size: "1m"

# docker network create frpc

networks:

frpc:

external: true

在客戶端同樣使用docker-compose up -d啟動服務,然後可以看到客戶端的執行日誌:

frpc  | 2020/10/04 20:42:56 [i] [service.go:288] [62e9e2de742523fe] login to server success, get run id [62e9e2de742523fe], server udp port [0]
服務端此時也會多一條連線日誌:

至此,frp 在容器內的使用就全部完畢了,隨後就由你自由發揮啦。

軟體的發布頁面中,作者提到了 「official docker image support on dockerhub and github registry.」

查閱 dockerhub 官方頁面,可以看到下面兩個映象倉庫中有兩個不同的推送記錄,不過目前使用人數不多,或許是因為作者尚未給出明確的文件示例吧(開源倉庫/容器倉庫):

不過在短暫使用幾天後發現,當前版本不論是映象尺寸還是執行效能都還不錯,而且相比較之前的版本,在容器中使用更加方便了,希望後續作者有時間能夠完善文件吧。

frp 是一款優秀的軟體,隨著越來越多的廉價公有雲的面世,使用這款軟體搭配家用伺服器使用,可以大幅降低除錯開發成本、以及簡化一些臨時場景下的複雜組網,值得一試。

最後,希望本文能對你想在容器中玩 frp 的你。

–eof

我現在有乙個小小的折騰群,裡面聚集了一些喜歡折騰的小夥伴。

在不發廣告的情況下,我們在裡面會一起聊聊軟體、homelab、程式設計上的一些問題,也會在群裡不定期的分享一些技術沙龍的資料。

關於折騰群入群的那些事

frp使用記錄

官方介紹 frp 是乙個可用於內網穿透的高效能的反向 應用,支援 tcp,udp 協議,為 http 和 https 應用協議提供了額外的能力,且嘗試性支援了點對點穿透。特點 全平台 簡單實用 測試環境 window10 服務端配置檔案 common bind port 7000 auto toke...

frp簡單使用

跨平台,根據自己情況選擇使用 服務端 客戶端 服務端連線到vps上,後台啟動服務端 nohup frps c frps.int jobs l cat frps.log 客戶端 將frpc.exe與frpc.ini傳到目標機的同一目錄下,直接執行 frpc.exe c frpc.int當frp客戶端啟...

oracle容器化docker解決方案

docker提供了輕量級的虛擬化,它幾乎沒有任何額外開銷。提供了乙個從開發到上線均一致的環境。開發效率 一是我們想讓開發環境盡量貼近生產環境 二是我們想快速搭建開發環境 基於docker研發小組 qq群 108636195 概要 1 只在資料庫初始化與資料庫遷移使用,普通迭代還是走提交增量指令碼 2...