by Devin Yang

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

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

需要登入才可留言!

類似的文章


openai,flax,docker

用容器跑OpenAI官方教學的Python(Flax)

如果您登入了openai的網站,可在此處看到官方的教學說明https://beta.openai.com/docs/quickstart/build-your-applicationAPI的KEY的申請,就在這頁的下方就有按鈕了+ Create new secret key本篇教您用Docker跑官方OpenAI執行環境。

docker,laravel

如何使用多個YAML檔,執行多個docker的container服務

這個影片介紹如何用docker-compose命令,指定多個YAML結構語言設定檔,來建立容器的執行,並且介紹在D-Laravel的使用環境中,我們如何透過使用.env的方式,簡化docker-compose的啟動命令。

docker

Devin Yang的Docker初學筆記

這是我初學Docker時的筆記,有點粗糙,有調整了一下下。 但我想對於Docker初學者,應該可以提供一些初步的概念, 歡迎參考看看。