У меня есть приложение, работающее на нескольких контейнерах Docker, определенное docker-compose
. Все работает отлично от моего пользователя и docker-compose ps
выхода выглядит следующим образом:Повторное использование контейнеров с `docker-compose`
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
Если вам нужен только один контейнер для каждого приложения, вы можете использовать 'container_name: app' в файле docker-compose.yml –
' docker-compose' по умолчанию использует имя папки yml-файла в качестве имени проекта и префикс это имя для всех имен контейнеров. Вы можете указать название проекта, используя 'docker-compose -p custom_name'. Я не уверен, что это приведет к повторному использованию существующих контейнеров с одинаковыми именами. Сначала попробуйте сначала проверить это на неважных контейнерах, если у вас есть важные данные, которые вы не хотите перезаписывать. –