一尘不染

通过docker-compose重新使用容器

docker

我有一个在定义的多个Docker容器上运行的应用程序docker-compose。我的用户一切正常,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

现在,我试图运行docker-compose upsupervisord(见相关部分supervisord.conf以下),问题是,容器现在命名myapp_app_1myapp_data_1并且myapp_db_1,这是他们创造了从无到有,并在原容器的所有自定义都将丢失。

我尝试重命名容器,但是它给出一个错误消息,指出已经有一个使用该名称的容器。

问: 是否有某种方法可以强制docker-compose重用现有容器,而不是根据各自的映像创建新容器?

主管

...
[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

阅读 292

收藏
2020-06-17

共1个答案

一尘不染

只要容器的配置没有改变, Compose 就会一直重用容器

如果容器中有任何状态,则需要将该状态放入卷中。容器应该是临时的,您应该能够销毁它们并在任何时间重新创建它们而不会丢失任何东西。

如果您需要初始化某些东西,我会在Dockerfile中完成它,以便将其保留在映像中。

2020-06-17