我有一个python flask应用程序,我希望在同一个服务器上有多个示例,每个容器都有自己的输出端口(或DNS)和依赖项。我使用docker-compose,它工作得很好。我看到了scale arg,但我认为它对负载平衡之类的事情很好,没有不同版本的应用程序。我想到的另一个解决方案是为一个应用程序提供多个服务,并在终端中按名称运行每个示例。
scale
oaxa6hgo1#
docker-compose scale命令已弃用,文档建议您使用docker-compose up --scale SERVICE=NUM。但在指定要缩放的端口时必须小心。如果您尝试将容器放在端口80上五次,则五次中的四次将失败-端口已经被占用。但有一个解决办法。我刚刚测试了这个方法,它起作用了。下面是我测试的docker-compose.yml:
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示例:10000、10001、10002和10003。我希望我回答了你的问题。
docker-compose up --scale test_app=4
test_app
10000
10001
10002
10003
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
2条答案
按热度按时间oaxa6hgo1#
docker-compose scale
命令已弃用,文档建议您使用docker-compose up --scale SERVICE=NUM
。但在指定要缩放的端口时必须小心。如果您尝试将容器放在端口80
上五次,则五次中的四次将失败-端口已经被占用。但有一个解决办法。我刚刚测试了这个方法,它起作用了。下面是我测试的
docker-compose.yml
:然后我用
docker-compose up --scale test_app=4
运行它,它在四个不同的(但事先指定的)端口上部署了4个test_app
示例:10000
、10001
、10002
和10003
。我希望我回答了你的问题。
xeufq47z2#
一种选择是在docker compose文件中复制服务。这不是最优雅的选择,但是你可以指定容器监听的端口。示例: