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