Docker Swarm使用Mesh網絡,因此對單個主機的任何請求都將被路由到正在運行的任何主機。這裏困難的部分是您的服務不在入口處運行,因此它不適用於世界。爲了使其可使用HAProxy的:
docker network create --driver overlay proxy
docker network create --driver overlay drupal
docker service create --name proxy \
-p 80:80 \
-p 443:443 \
-p 8080:8080 \
--network proxy \
-e MODE=swarm \
vfarcic/docker-flow-proxy
docker service create --name drupalapp \
--network proxy \
--network drupal \
mastermindg/rpi-apache2php7
docker service create --name drupaldb \
--network drupal \
mysql:latest
所以在這裏你需要創建兩個網絡:1 drupaldb和drupalapp(稱爲Drupal的)和一個之間的內部使用了HAProxy的使用暴露你的端口。您的drupalapp服務將需要包含在代理覆蓋網絡以及drupal網絡中。
註冊您的HAProxy的服務:
curl "$masterip:8080/v1/docker-flow-proxy/reconfigure?serviceName=drupalapp&servicePath=/&port=80"
現在,您的Drupal站點可以在任何節點上的羣通過達到:
http://nodeX/index.php
的優點是現在,你可以端口轉發給任何節點它會正確解析。
偉大的答案...完美的作品! – user3063045