使用 `docker-compose` 重用容器
Reuse containers with `docker-compose`
我在 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
现在我正在尝试 运行 docker-compose up
和 supervisord
(请参阅下面 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
撰写 will always reuse containers as long as their config hasn't changed.
如果容器中有任何状态,则需要将该状态放入卷中。容器应该是短暂的,您应该能够随时销毁它们并重新创建它们而不会丢失任何东西。
如果您需要初始化某些东西,我会在 Dockerfile 中进行,以便它保留在图像中。
我在 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
现在我正在尝试 运行 docker-compose up
和 supervisord
(请参阅下面 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
撰写 will always reuse containers as long as their config hasn't changed.
如果容器中有任何状态,则需要将该状态放入卷中。容器应该是短暂的,您应该能够随时销毁它们并重新创建它们而不会丢失任何东西。
如果您需要初始化某些东西,我会在 Dockerfile 中进行,以便它保留在图像中。