我想运行3个在某个端口上运行的docker image实例。我希望将所有3个实例的端口公开给主机。我希望能够控制将哪些主机端口映射到容器。
首先,我尝试在docker-compose.yml中创建3个不同的服务。这行得通,但不是可取的。
第二,我在docker-compose.yml中创建一个服务 然后,我尝试通过环境变量控制暴露的端口。但是当我创建第二个容器时,docker会删除我创建的第一个容器。
我不能使用scale
选项,因为它会将暴露的端口映射到主机上的随机端口。
myservice:
image: myimage:latest
container_name: service-${PORT}
volumes:
- ${DIR}:/data
ports:
- "${PORT:-8011}:8011"
- "${ADMINPORT:-8012}:8012"
答案 0 :(得分:1)
您可以设置要与scale
的{{1}}选项一起使用的端口范围:
compose
启动它:
ports: - "8011-8013:8011"
然后容器将使用端口docker-compose up --scale myservice=3
,8011
和8012