首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在swarm中实现多个堆栈的联网

如何在swarm中实现多个堆栈的联网
EN

Stack Overflow用户
提问于 2020-08-22 10:49:50
回答 1查看 134关注 0票数 0

我有多个堆栈在我的群中运行。堆栈是从合成文件创建的。为了便于说明,假设我有以下内容:

代码语言:javascript
复制
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应用服务定义中:

代码语言:javascript
复制
networks:
 - nginx_default

这是运行docker network ls时显示的网络名称,但我收到一条错误消息,指出此网络未定义。

让我的web应用容器和nginx容器在同一个私有网络上的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-23 00:22:36

我的问题是我需要将网络声明为外部网络。下面是堆栈2的工作示例配置:

代码语言:javascript
复制
version: "3.8"
networks:
  stack2:
  nginx:
    external: true
services:
    db:
        networks:
            stack2:
        image: mysql:5.7
    webapp:
        networks:
            stack2:
            nginx:
        image: webapp

这将把webapp连接到nginx网络,但是数据库不会暴露给它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63532110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档