trunk-logo-white

最新消息

Automated Nginx Reverse Proxy for Docker

Share This Post

分享在 facebook
分享在 linkedin
分享在 twitter
分享在 email

現在的維運人員實在太幸福了,甚至是開發人員也是,在以前必須要設置一堆東西才能做到 Reverse Proxy,現在就有非常簡易且自動的方式完成,這邊就要介紹一下,如何讓 docker 可以自動做到 Reverse Proxy。

相關細節請參考下面連結:

附上 docker compose 設定方式

docker compose

web_01:
  container_name: hmi-web-01
  image: node:4
  command: "/bin/bash -l -c 'npm start'"
  expose:
    - "3000"
  working_dir: /app
  volumes:
    - ./:/app
  environment:
    - "VIRTUAL_HOST=192.168.99.119"
    - "APP_NAME=hmi-web-01"
  restart: always
web_02:
  container_name: hmi-web-02
  image: node:4
  command: "/bin/bash -l -c 'npm start'"
  expose:
    - "3000"
  working_dir: /app
  volumes:
    - ./:/app
  environment:
    - "VIRTUAL_HOST=192.168.99.119"
    - "APP_NAME=hmi-web-02"
  restart: always
nginx-proxy:
  container_name: nginx-proxy
  image: jwilder/nginx-proxy
  ports:
    - "80:80"
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock
  restart: always

其中,跟一般使用 docker ports 的設置不同,我們只要讓 docker container expose port 就好,nginx-proxy 將會自動解析 docker container 的相關資訊進行 port forwarding,而每個實體 server 只要設置環境變數 VIRTUAL_HOST=192.168.99.119 將會自動記行 mapping,就是這麼簡單。

運行範例

docker-compose up -d web-01
docker-compose up -d web-02
docker-compose up -d nginx-proxy

如此就可以自動完成相關設置

執行驗證

我在 sample 中輸出 server 的識別,就如同 docker compose 中所設置,可以看到,我對同一個 ip 進行 reload 將會顯示不同名稱。

如此,一旦其中一個 docker 掛掉,系統將會保持 online,我們只要在 restart 就可以確保系統不會斷線。

實在是太棒了!感謝撰寫這套件的先進!

結論

還記得去年(2015)葉大在 JCConf 中所分享的,

Immutable infrastructure:觀念與實作

其中一張簡報

這件事情,將可以更輕易地做到,一旦有了第一個循環,接著就是不停個改善優化,盡可能地做到長生不敗,與大家分享!

同場加映

Raspberry Pi 用 nginx-proxy

https://hub.docker.com/r/bestlibre/rpi-nginx-proxy/

參考資料

http://www.informaticslab.co.uk/infrastructure/2015/12/09/raspberry-pi-docker-cluster.html

https://github.com/jwilder/nginx-proxy

http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

產品資訊
tilda.lu

產品資訊

Ut Elit Tellus, Luctus Nec Ullamcorper Mattis, Pulvinar Dapibus Leo. Donec Sodales Sagittis Magna. Sed Consequat, Leo Eget Bibendum Sodales, Augue Velit Cursus Nunc, Quis Gravida Magna Mi A Libero. Lorem Ipsum Dolor Sit Amet, Consectetur Adipiscing.Ut Elit Tellus, Luctus Nec Ullamcorper Mattis, Pulvinar Dapibus Leo. Donec Sodales Sagittis Magna. Sed Consequat, Leo Eget Bibendum Sodales, Augue Velit Cursus Nunc, Quis Gravida Magna Mi A Libero. Lorem Ipsum Dolor Sit Amet, Consectetur Adipiscing.

閱讀更多 »

Do You Want To Boost Your Business?​

Drop Us A Line And Keep In Touch​