使用docker-compose链接另一个docker-compose容器

3
我有些困惑如何使用docker-compose设置我的环境。我想要以下内容:
  • 用于ELK堆栈的docker-compose文件
  • 带有filebeat的Web应用程序A的docker-compose文件
  • 带有filebeat的Web应用程序B的docker-compose文件
我想独立启动/停止/构建ELK堆栈容器,但我想将容器链接到ELK堆栈容器以打开filebeat连接。
我期望的结果如下所示:
  1. 没有运行的容器
  2. 在Web应用程序A文件夹中进行docker-compose up。没有正在运行的elk容器。首先启动ELK堆栈,然后启动web应用程序A容器。
  3. 在Web应用程序B文件夹中进行docker-compose up。elk容器已经在第一步运行(从1开始)。不会启动其他ELK堆栈,而是启动web应用程序B。
  4. 在elk堆栈容器中执行docker-compose stop可行
  5. 在elk堆栈容器中执行docker-compose start可行,并且“重新连接”。
请问这是否可能?我无法使用extends或link实现该功能。谢谢!
1个回答

8

Docker 网络是关键。您可以执行以下操作:

$ docker network create some-net

然后在您的 compose 文件中,将以下内容添加到底部:

networks:
  default:
    external:
      name: some-net

这将把默认网络(对于每个容器)设置为先前定义的网络(some-net)。所有容器(无论它们是在哪个compose文件中定义的)都应该能够使用内置服务名称DNS解析相互通信。
相关文档:https://docs.docker.com/compose/networking/#/using-a-pre-existing-network

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接