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

需要登入才可留言!

類似的文章


dlaravel,docker

D-Laravel學習三階段

閒聊D-Laravel的使用的三階段,為何使用D-Laravel。 因為D-Laravel使用的設定檔都相當的簡單,極適何Docker的初學者學習, 並且就自不懂Docker運用的使用者,也可以借住./console及./create兩個指令建立專案。

docker,laravel

[D-Laravel]./console node

進行Laravel開發時,有時我們會需要透過npm安裝nodejs的套件,但是偏偏我們系統中的Node又不夠新。 或許因某些因素沒法升級,例如要跑舊版的nodejs程式等。 其實我們可以透過簡單的指令,用docker,讓我們就能使用最新版本的node image來掛載host端的/sites資料夾囉。 這麼一來我們就可以隨時執行新版本的npm指令啦。

docker

關於GCE上FPM image如何變更owner

CCC網站升級php 7.2.0囉,有Docker的環境,輕鬆搞定php升級, 在Linux上Image的變更還是有些注意事項您應該了解。 如果您跟我一樣透過docker將D-Laravel安裝於Linux的系統上,當您變更不同的image時, 或許您可能會碰到,疑!怎麼composer沒有權限寫入資料夾的錯誤。 directory is not writable