Docker-Compose在不同端口运行一个镜像的多个示例

scyqe7ek  于 2023-05-28  发布在  Docker
关注(0)|答案(2)|浏览(235)

我有一个python flask应用程序,我希望在同一个服务器上有多个示例,每个容器都有自己的输出端口(或DNS)和依赖项。我使用docker-compose,它工作得很好。我看到了scale arg,但我认为它对负载平衡之类的事情很好,没有不同版本的应用程序。我想到的另一个解决方案是为一个应用程序提供多个服务,并在终端中按名称运行每个示例。

oaxa6hgo

oaxa6hgo1#

docker-compose scale命令已弃用,文档建议您使用docker-compose up --scale SERVICE=NUM。但在指定要缩放的端口时必须小心。如果您尝试将容器放在端口80上五次,则五次中的四次将失败-端口已经被占用。但有一个解决办法。
我刚刚测试了这个方法,它起作用了。下面是我测试的docker-compose.yml

version: '3.7'
services:
  test_app:
    image: <my_custom_image>
    ports:
      - 10000-10003:80

然后我用docker-compose up --scale test_app=4运行它,它在四个不同的(但事先指定的)端口上部署了4个test_app示例:10000100011000210003
我希望我回答了你的问题。

xeufq47z

xeufq47z2#

一种选择是在docker compose文件中复制服务。这不是最优雅的选择,但是你可以指定容器监听的端口。示例:

services:
  app1:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"  # Map host port 8000 to container port 8000

  app2:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8001:8000"  # Map host port 8001 to container port 8000

相关问题