docker 容器未通过端口连接

docker containers are not connecting through ports

我正在尝试 运行 两个容器:

 A:
    image: myImage:e2e
    ports:
      - "5100:80"
    volumes:
    - ../myui-sources/:/app
    command: bash -c "npm run json-server" # this will run on port 5100 -- output: 'API started! listening to port!: 5100'

  B:
    build:
      context: ../myui-sources/e2e/
      dockerfile: ./Dockerfile  # 'here im copying files and running a yarn install'
    depends_on:
      - A
    volumes:
      - ../myui-sources/:/app
    ports:
      - "4200:80"
    command:  bash -c "yarn e2e" # this will try to connect with container A, output: 'Error: connect ECONNREFUSED 127.0.0.1:5100'

4200端口的容器B需要与localhost:5100中的容器A进行交互, 我在每个容器上添加了端口,但没有结果,我做错了什么?,我需要更改什么?,我是 docker 的新手,提前谢谢你!

当我运行使用 yarn e2e 命令时,我有以下内容:

yarn run v1.22.5
[33mB_1  |[0m $ npx cucumber-js
[33mB_1  |[0m Failures:
[33mB_1  |[0m 
[33mB_1  |[0m 1) Scenario: The contents of the root folder should be displayed in the Table View # test/features/poc.feature:11
[33mB_1  |[0m    ✖ Before # test/hooks/api.hooks.ts:4
[33mB_1  |[0m        Error: connect ECONNREFUSED 127.0.0.1:5100

同一网络上的容器通过使用服务名称作为主机名直接相互连接。 docker-compose 的默认设置是将所有服务添加到网络。

因此,要从 B 连接到 A,您可以使用 A 作为主机名,然后是容器使用的实际端口,在您的例子中是 80 .所以 A:80.