使用Docker Compose运行相同多容器应用程序的副本

问题

我希望通过运行2个容器作为一个单元,通过Docker运行webapp.

1个容器运行我的Web服务器(Tomcat 7).

另一个容器运行我的数据库(Postgres 9.4).

我可以运行docker-compose up,Docker能够按照我的docker-compose.yml中的指定启动我的两个容器:

web:                                                                                     
  build: .                                                                         
  ports:                                                                           
   - "5000"                                                                        
  links:                                                                           
   - db                                                                         
db:                                                                             
  image: postgres

我希望能够通过再次运行docker-compose来启动我的webapp的另一个副本,但这会导致Docker告诉我已经有容器正在运行:

$docker-compose up -d
Creating composetest_db_1
Creating composetest_web_1
$docker-compose up -d
composetest_db_1 is up-to-date
composetest_web_1 is up-to-date

我的工作

通过使用-p选项为新副本提供不同的项目名称,我解决了这个问题:

$docker-compose -p project1 up -d
...
Successfully built d3268e345f3d
Creating project1_web_1
$docker-compose -p project2 up -d
...
Successfully built d3268e345f3d
Creating project2_web_1

不幸的是,这为每个副本创建了新图像:

$docker images
project1_web          latest              d3268e345f3d        2 hours ago         682 MB
project2_web          latest              d3268e345f3d        2 hours ago         682 MB

有没有办法使用docker-compose通过使用单个图像来旋转多容器应用程序的多个实例?

最佳答案
如果要重用图像,则应独立于撰写脚本构建图像.

run docker build -t somewebapp/web:latest ,

然后更改docker-compose.yml的构建部分以引用图像.

转载注明原文:使用Docker Compose运行相同多容器应用程序的副本 - 代码日志