Если вы просто снова запустите docker compose up -d
, он заметит новый контейнер и измененную конфигурацию и применит их.
Но:
(не уничтожая ничего)
Существует ряд настроек, которые можно установить только во время запуска контейнера. Если вы измените их, Docker Compose удалит и заново создаст соответствующий контейнер. Например, ссылки доступны только при запуске, поэтому при повторном запуске docker-compose up -d
будет удален и заново создан контейнер web
.
это уничтожило контейнер БД Mongo ... Я не могу этого сделать ... снова ...
db:
image: mongo
restart: always
Добавьте к этому параметр volumes:
, чтобы данные сохранялись вне контейнера. Вы можете хранить его в именованном томе, которым, возможно, управляет Docker Compose, что имеет некоторые преимущества, но каталог системы хоста, вероятно, сложнее случайно уничтожить. Вам придется удалить и перезапустить контейнер, чтобы изменить эту опцию. Но учтите, что вам также придется удалить и перезапустить контейнер, если, например, в MongoDB есть обновление безопасности, и вам нужен новый образ.
Ваше идеальное состояние здесь:
- Фактические базы данных (например, ваш контейнер MongoDB) хранят данные в именованных томах или каталогах хоста
- Приложения (например, ваш контейнер Rails) ничего не хранят локально и могут быть свободно уничтожены и созданы заново
- Весь код находится в образах Docker, который всегда можно восстановить из системы контроля версий
- Используйте тома по мере необходимости для ввода файлов конфигурации и извлечения журналов
Если вы потеряете весь каталог /var/lib/docker
(что случается!), Вы не должны потерять ни одно состояние, хотя вы, вероятно, столкнетесь с некоторым простоем приложения.