0

我有 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:

问题:

  • 是否有可能做到这一点?
  • 如果第一个问题是可能的,请建议我:)
4

1 回答 1

0

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

docker run -d -p 8080:8080 tomcat

代替

docker run -d tomcat

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

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

于 2019-08-19T10:28:22.227 回答