by Devin Yang

建立於: 6年前 ( 更新: 6年前 )

Raspberry很便宜有相當多的運用,例如有人拿來當Wifi的router,
遊戲機,監視器及許許多多物聯網相關運用,我則是用他來當一台HAProxy。

長話短說,因為有一台老舊的Windows伺服器,他執行舊版本的PHP及Apache,並且無法設定HTTPS憑證,所以就想說
透過HAProxy來幫忙啦。讓這台老舊伺服器也可以有https的網址,
所以來分享我的docker-compose.yml設。

必要知識:
此文章假設,您已了解haproxy的相關設定了。
如果您還不會在自己的樹莓派安裝,docker及docker-compose請參考如下網址:
https://www.ccc.tc/article/install-docker-and-docker-compose-on-raspberrypi

關於docker-compose的設定如下:
以下是我的docker-compose.yml設定
version: '3.6'
services:
 haproxy:
  network_mode: host
  image: haproxy
  restart: always
  environment:
    backend_server: 192.168.1.100
  volumes:
    - ./cert.pem:/etc/ssl/cert.pem
    - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
這裡有幾個重要設定
一、restart: always
當成功啟動後,下次再重開,就能自動啟動docker-compose了,不用再進入Raspberry裡去上指令docker-compose up。
關於重啟原則(restart policy),至少需成功的啟動10秒後,才代表成功啟動,下次重啟時,才會自動重啟。

二、network_mode: host
這是Linux才能設定的網路模式,可直接讓容器綁定的連綁埠綁到host上
(所謂的host指的就是Raspberry,所以就是綁在樹莓派的eth0網卡上),
所以我能將Raspberry上進來的流量直接導入到另一台實體的主機(backend_server)上啦。

三、enviroment
我們可以在,enviroment中設定backend_server的位置,
就可以在HAProxy的設定檔中,使用這個設定了。

四、volumens
掛載了憑證,及haproxy.cfg的設定。

關於docker-compose的基本指令基本知識:
我們可以建立一個haproxy的資料夾,放入docker-compose.yml檔及憑證,還有haproxy的設定檔。
然後,執行
docker-compose up -d
即可啟動囉。
停止是:
docker-compose down
如果想要查看log,我們可以執行
docker-compose logs -f


下方是個簡單的示意圖:
藍色線是SSL加密的網址,流量進入到HAProxy後,再將流量導向後端(backend_server) ,未加密的網址。


補充
本文假設您已了解haproxy.cfg的各項設定,不對此進行說明,請自行請教Google老師了。
有些與此docker-compose相關的片段的資料供參考。
server web ${backend_server}:80 check cookie s1

#或是
backend mysql
   mode tcp
   server database ${backend_server}:3306
上方的變數,${backend_server}便是我們在docker-compose.yml中設定的192.168.1.100。





 

Tags: docker

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


docker,laravel

用Docker建立Lravel開發環境超簡單

Laravel 5.5系統環境您準備好了嗎? laravel/framework 5.5.x-dev requires php >=7.0 -> your PHP version (5.6.30) does not satisfy that requirement. 這篇文章描述如何使用Docker創建Laravel的開發環境。 有了簡單到爆炸的D-Laravel簡易bash, 不要在說我無法建立Laravel的開發環境了。

laravel docker

關於D-Laravel的專案模式

如果您是新使用者,建議您改用我的最新環境phpenv。https://github.com/DevinY/phpenv

docker,git

用docker-compose快速建立私有的git服務

如何快速建立一個開箱即用的Gogs環境呢? 本文介紹採用docker-compose.yml快速建立gogs環境。