通过docker-compose重新使用容器

fer*_*sta 6 supervisord docker docker-compose

我有一个在定义的多个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
Run Code Online (Sandbox Code Playgroud)

现在,我试图运行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
Run Code Online (Sandbox Code Playgroud)

dne*_*hin 6

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

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

如果您需要初始化某些内容,我会在 Dockerfile 中进行,以便将其保留在映像中。