docker compose 端口已分配

docker compose port already allocated

我有三个 docker 容器,它们都需要访问端口 5432 上的 postgres。运行 每个独立我可以通过 -p 5432:5432 但我不能 运行 两个一次或更多,因为它们发生冲突。

我希望通过 docker compose 解决这个问题,但我需要有关如何在 yml 中进行端口映射的指导。

这就是我所拥有的,但无法正常工作:

version: '2'

services:
  foo:
    image: mynamespace/foo
    ports:
      - "5432:5432"
  bar:
    image: mynamespace/bar
    ports:
      - "5432:5432"
  baz:
    image: mynamespace/baz
    ports:
      - "5432:5432"

您不需要在每个容器上打开端口。您只需为您的数据库容器打开它。结果是这样的:

version: '2'

services:
  foo:
    image: mynamespace/foo
  bar:
    image: mynamespace/bar
  baz:
    image: mynamespace/baz