我有一个在定义的多个Docker容器上运行的应用程序docker-compose。我的用户一切正常,docker-compose ps输出如下所示:
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 up与supervisord(见相关部分supervisord.conf以下),问题是,容器现在命名myapp_app_1,myapp_data_1并且myapp_db_1,这是他们创造了从无到有,并在原容器的所有自定义都将丢失。
docker-compose up
supervisord
supervisord.conf
myapp_app_1
myapp_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
主管
... [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
只要容器的配置没有改变, Compose 就会一直重用容器。
如果容器中有任何状态,则需要将该状态放入卷中。容器应该是临时的,您应该能够销毁它们并在任何时间重新创建它们而不会丢失任何东西。
如果您需要初始化某些东西,我会在Dockerfile中完成它,以便将其保留在映像中。