【发布时间】:2016-08-13 20:41:05
【问题描述】:
我有一个应用程序在docker-compose 定义的多个 Docker 容器上运行。我的用户一切正常,docker-compose ps 输出看起来像:
Name Command State Ports
------------------------------------------------------------
myuser_app_1 /config/bootstrap.sh Exit 137
myuser_data_1 sh Exit 0
myuser_db_1 /run.sh Exit 143
现在我正在尝试使用supervisord 运行docker-compose up(请参阅下面supervisord.conf 的相关部分),问题是容器现在命名为myapp_app_1、myapp_data_1 和myapp_db_1,即它们是从头开始创建的,并且以前容器上的所有自定义都丢失了。
我尝试重命名容器,但它给出了一个错误,提示已经有一个具有该名称的容器。
问:有什么方法可以强制 docker-compose 重用现有容器,而不是根据各自的镜像创建新容器?
supervisord.conf
... [program:myapp] command=/usr/local/bin/docker-compose -f /usr/local/app/docker-compose.yml up redirect_stderr=true stdout_logfile=/var/log/myapp_container.log stopasgroup=true user=myuser
【问题讨论】:
-
如果每个应用只需要一个容器,那么您可以在 docker-compose.yml 文件中使用
container_name: app -
docker-compose默认使用 yml 文件的文件夹名称作为项目名称,并将该名称作为所有容器名称的前缀。您可以使用docker-compose -p custom_name指定项目名称。我不确定这是否会强制重用具有相同名称的现有容器。如果您有不想覆盖的重要数据,请先尝试在不重要的容器上进行测试。
标签: docker docker-compose supervisord