首页 > 解决方案 > 是否可以在 2 个 docker-compose.yaml 之间通过 docker-compose 在 docker 网络上卷曲?

问题描述

我有 2 个应用程序在不同的网络上运行,它使用单独的 docker-compose.yaml。所以我试图从应用程序 A 向应用程序 B 调用请求,但它不起作用。

docker exec -it app_a_running curl http://localhost:8012/user/1

所以我得到了一个错误

cURL error 7: Failed to connect to localhost port 8012

docker-compose-app-a.yaml

version: "3"

services:
  app:
    build: go/
    restart: always
    ports:
    - 8011:8011
    volumes:
    - ../src/app:/go/src/app
    working_dir: /go/src/app
    container_name: app-a
    command: sleep 72000
    networks:
    - app-a-network

networks:
  app-a-network:

docker-compose-app-b.yaml

version: "3"

services:
  app:
    build: go/
    restart: always
    ports:
    - 8012:8012
    volumes:
    - ../src/app:/go/src/app
    working_dir: /go/src/app
    container_name: app-b
    command: sleep 72000
    networks:
    - app-b-network

networks:
  app-b-network:

问题:

标签: dockerdocker-composedocker-networkingdocker-network

解决方案


您可以curl在 docker 容器上使用。您的 curl 命令不起作用的原因可能是您没有发布 docker 容器的端口。例如,尝试:

docker run -d -p 8080:8080 tomcat

代替

docker run -d tomcat

这会将您机器的 8080 端口转发到容器的 8080 端口。

如果您有容器的外壳,则可以使用服务名称或容器名称来卷曲 Docker 网络上的容器,前提是您的目标存在于相同的网络中。


推荐阅读