如何在 Docker Compose 中为复制容器配置端口映射?

Ale*_*sei 5 docker docker-compose

目标是运行两个容器publisher-app。一个容器应映射到主机上的端口 8080,另一个容器应映射到主机上的端口 8081。以下是docker-compose

  publisher_app:
    ports:
      - "8080-8081:8080"
    environment:
      server.port: 8080
    deploy:
      mode: replicated
      replicas: 2
Run Code Online (Sandbox Code Playgroud)

创建了两个容器,但据我了解,两个端口都分配给第一个容器,第二个容器产生此错误:Ports are not available: listen tcp 0.0.0.0:8081: bind: address already in use

这是输出docker ps -a

6c7067b4ebee   spring-boot-rest-kafka_publisher_app   "java -jar /app.jar"     33 seconds ago   Up 28 seconds              0.0.0.0:8080->8080/tcp, 0.0.0.0:8081->8080/tcp   spring-boot-rest-kafka_publisher_app_2
70828ba8f370   spring-boot-rest-kafka_publisher_app   "java -jar /app.jar"     33 seconds ago   Created                                                                     spring-boot-rest-kafka_publisher_app_1
Run Code Online (Sandbox Code Playgroud)

Docker 引擎版本:20.10.11

Docker 撰写版本:2.2.1

此案如何处理?我们将非常感谢您的帮助。

这是源代码:https://github.com/aleksei17/springboot-rest-kafka-mysql/blob/master/docker-compose.yml

Noa*_*eli 6

在 Windows 10 上进行本地尝试,同样失败,无论是使用 v2 还是禁用 v2。

\n

这似乎是一个撰写问题

\n

当在 arch 上尝试时:amd64基于 Fedora 的 Linux 发行版,安装了 docker 包管理器并手动安装 docker-compose 1.29.2使用 Linux 官方指南有效

\n

撰写文件:

\n
version : "3"\nservices:\n  web:\n    image: "nginx:latest"\n    ports:\n      - "8000-8020:80"\n
Run Code Online (Sandbox Code Playgroud)\n

泊坞窗命令:

\n
docker-compose up --scale web=5\n
Run Code Online (Sandbox Code Playgroud)\n
CONTAINER ID   IMAGE                                     COMMAND                  CREATED          STATUS                    PORTS                                   NAMES\nb304d397b2cd   nginx:latest                              "/docker-entrypoint.\xe2\x80\xa6"   14 seconds ago   Up 7 seconds              0.0.0.0:8004->80/tcp, :::8004->80/tcp   testdir_web_4\na8c6f177a6e6   nginx:latest                              "/docker-entrypoint.\xe2\x80\xa6"   14 seconds ago   Up 7 seconds              0.0.0.0:8003->80/tcp, :::8003->80/tcp   testdir_web_3\nb1abe53e7d7d   nginx:latest                              "/docker-entrypoint.\xe2\x80\xa6"   14 seconds ago   Up 8 seconds              0.0.0.0:8002->80/tcp, :::8002->80/tcp   testdir_web_2\nead91e9df671   nginx:latest                              "/docker-entrypoint.\xe2\x80\xa6"   14 seconds ago   Up 9 seconds              0.0.0.0:8001->80/tcp, :::8001->80/tcp   testdir_web_5\n65ffd6a87715   nginx:latest                              "/docker-entrypoint.\xe2\x80\xa6"   24 seconds ago   Up 21 seconds             0.0.0.0:8000->80/tcp, :::8000->80/tcp   testdir_web_1\n
Run Code Online (Sandbox Code Playgroud)\n