首页 > 解决方案 > 如何使用 docker-compose 将已经运行的容器链接到我的应用程序

问题描述

我需要将 2 个名为proxy1proxy2的容器链接到myapp

proxy1proxy2使用 docker 命令运行,myapp使用 docker-compose.yml

我需要能够从容器myapp ping proxy1proxy2

我尝试external_links在我的 docker-compose.yml 中使用:

services:
  myapp:
    build: .
    ports:
      - 3000:3000
    external_links:
      - proxy1
      - proxy2

如果我做一个docker ps我有这个:

CONTAINER ID        IMAGE               COMMAND                  STATUS              PORTS                                            NAMES
2f0365826670        myapp         "docker-entrypoint.s…"   Up About an hour    0.0.0.0:3000->3000/tcp, 0.0.0.0:8001->8001/tcp   myapp_myapp_1
bbd1f5340086        proxy         "supervisord -n"         Up 2 hours          127.0.0.1:5002->8080/tcp                         proxy2
6c3cd1eb6530        proxy         "supervisord -n"         Up 2 hours          127.0.0.1:5001->8080/tcp                         proxy1

如何从 myapp 访问这 2 个代理容器?

标签: dockerdocker-composecontainers

解决方案


我建议您执行以下操作:

创建网络:

docker network create mynetwork

将您的独立容器连接到网络:

docker network connect mynetwork my_container

更新你的 docker-compose:

services:
  myapp:
    build: .
    ports:
      - 3000:3000
networks:
  default:
    external:
      name: mynetwork

另一种方法是检查独立容器网络正在使用什么:

docker inspect proxy1

并将该网络用作撰写中的外部网络。

或者您可以network_mode: "host"在您的撰写中使用不推荐的


推荐阅读