我需要为同一张图片启动多个容器。如果我按如下所示创建我的撰写文件,则可以正常工作。
version: '2'
services:
app01:
image: app
app02:
image: app
app03:
image: app
app04:
image: app
app05:
image: app
我有什么简单的方法可以提及撰写实例的数量,而不是多次复制和粘贴?
Answers:
更新的答案(2017年10月)
正如其他人提到的那样,docker API已更改。我正在更新我的答案,因为这是大多数人可能会看到的答案。
docker-compose up -d --scale app=5
不幸的是,我们目前无法在docker-compose.yml文件中指定此版本(从3.5版开始)。
详细信息:
他们确实scale为docker-compose的2.2和2.3版本引入了该选项,但为3.0版删除了该选项。另外,要使用2.2或2.3版本,您需要下载旧版本的docker-compose工具。当前版本不支持2.2或2.3(但是支持2.0或2.1)。还有一个新deploy部分,replicas: 5但仅适用于群体模式。
---旧答案--------------------------------------
docker-compose scale app=5
参见https://docs.docker.com/compose/reference/scale/
然后,您只需要此docker-compose文件
version: '2'
services:
app:
image: app
expose:在同一网络上暴露的端口到其他服务或ports:暴露端口到主机(公开访问)。docs.docker.com/compose/compose-file/#short-syntax-1
-d(守护程序模式)意味着一旦使用Ctrl + C终止最后一个缩放的容器,所有使用同一docker-compose文件启动的容器都将停止。非常危险。我建议加入-d到docker-compose up在上面的答案,以避免复制/粘贴灾害。
up -d。这次是错别字。
scale现在不推荐使用该命令,up而应该使用它。
docker-compose up --scale app=2
您可以replica按照https://docs.docker.com/compose/compose-file/#replicas中所述进行操作
version: '3'
services:
worker:
image: dockersamples/examplevotingapp_worker
networks:
- frontend
- backend
deploy:
mode: replicated
replicas: 6
编辑(根据评论):可以docker-compose --compatibility up使docker接受部署部分,而无需使用swarm。
docker-compose up命令忽略了该选项。
docker-compose --compatibility up而使docker接受deploy部分。
docker-compose up,它将运行预先配置的实例数?