我有多个堆栈在我的群中运行。堆栈是从合成文件创建的。为了便于说明,假设我有以下内容:
Stack 1
- Nginx container
Stack 2
- Web App Container
- Database Container
- Cache Container
- SMTP Container
Stack 3
- Web App Container
- Database Container当我部署这些堆栈时,docker会创建一个覆盖网络,因此每个堆栈都有3个独立的覆盖网络。
我想做的是让Stack2和Stack3中的Web App Container能够访问Stack1覆盖网络,这样我就可以proxy_pass传入的连接,而不必将端口暴露在互联网上。
docker网站似乎只对传统的swarm网络有一个解释:https://docs.docker.com/compose/networking/
该页面显示stacks networking可参考此页面:https://docs.docker.com/engine/reference/commandline/stack_deploy/
我在那个页面上看不到任何关于网络的信息,所以我有点卡住了。
在我尝试添加的web应用服务定义中:
networks:
- nginx_default这是运行docker network ls时显示的网络名称,但我收到一条错误消息,指出此网络未定义。
让我的web应用容器和nginx容器在同一个私有网络上的正确方法是什么?
发布于 2020-08-23 00:22:36
我的问题是我需要将网络声明为外部网络。下面是堆栈2的工作示例配置:
version: "3.8"
networks:
stack2:
nginx:
external: true
services:
db:
networks:
stack2:
image: mysql:5.7
webapp:
networks:
stack2:
nginx:
image: webapp这将把webapp连接到nginx网络,但是数据库不会暴露给它。
https://stackoverflow.com/questions/63532110
复制相似问题