我是码头工人的新手。我有多个容器上运行的应用程序。现在,我想发布我的所有应用程序。我打算做的是做一个包含我所有应用程序的集群。我想要至少4个容器。
这是我的理想,但我不知道如何设置nginx容器来扮演代理角色并将请求发送到正确的容器,以便在用户发送http://www.node-app.me之类的请求时,容器nginx将返回Node_js的结果,依此类推。你能不能给出从哪里开始的想法?
答案 0 :(得分:1)
除非您对nginx有特殊需求,否则我建议您使用Træfik来执行反向代理。它可以配置为通过容器上的标签动态获取反向代理规则。这是一个基本的例子。
首先,为Træfik和您的三个容器创建一个通用网络。
docker network create traefik
运行Træfik,暴露端口80并启用docker后端。
docker run --name traefik \
-p 80:80 \
-v /var/run/docker.sock:/var/run/docker.sock \
--network traefik \
traefik:1.2.3-alpine \
--entryPoints='Name:http Address::80' \
--docker \
--docker.watch
使用适当的标签运行您的三项服务。确保他们与Træfik共享一个共同的网络,以便Træfik能够达到它。 node_js
可能看起来像这样。
docker run --name node_js \
--network traefik \
--label 'traefik.frontend.rule=Host:www.node-app.me' \
--label 'traefik.frontend.entryPoints=http' \
--label 'traefik.port=80' \
--label 'traefik.protocol=http' \
your_node_js_image
当它看到此容器正在运行时,Træfik将动态创建一个与Host
www.node-app.me
标头匹配的前端规则。 traefik.port
和traefik.protocol
标签让Træfik知道如何与您的容器进行通信。
有关更多选项和详细信息,请参阅Træfik's Docker backend的文档。