Мне пришлось несколько раз изменять и перезагружать конфигурацию для устранения неполадок в почтовом сервисе SiteGround. В сети есть множество советов о том, как сделать это максимально быстро. Однако их обобщение лишь запутывает ситуацию.
Поэтому не могли бы вы подробнее разъяснить различия между перечисленными ниже командами?
Информация в руководстве по установке и сообщениях на этом форуме как-то противоречива. Не до конца ясно, например, в чём разница между инициализацией и сборкой контейнера. Должна существовать «лестница эскалации», указывающая, какие действия требуются при изменении, например, файла app.yml: одни говорят, что достаточно команды start, другие утверждают, что нужно выполнить rebuild или также ./discourse-setup.
Команды:
start: Запуск/инициализация контейнера
stop: Остановка работающего контейнера
restart: Перезапуск контейнера
destroy: Остановка и удаление контейнера
bootstrap: Подготовка контейнера к запуску на основе шаблона конфигурации
rebuild: Пересборка контейнера (удаление старого, подготовка, запуск нового)
У меня постепенно складывается впечатление, что все команды представляют собой последовательность действий.
Каждый последующий шаг/команда выполняет то же самое, что и предыдущий, плюс добавляет что-то ещё.
Например, что-то вроде этого:
Запуск
bootstrap: удаление старого + подготовка контейнера к запуску на основе шаблона конфигурации
rebuild: bootstrap + пересборка контейнера (запуск нового), то есть выполнение таких действий, как загрузка последних версий программного обеспечения и применение обновлённой конфигурации
start: инициализация, что бы это ни значило
Остановка
stop: Остановка работающего контейнера
restart: Перезапуск контейнера (включая остановку)
Я собираюсь сделать PR на GitHub, но мне нужно детально понять, что делает каждая команда, а сейчас это не так.
Не могли бы вы рассказать, что запускает каждая команда? Я прочитал много постов на эту тему, но информация противоречива.
Хороший пример — start. В одном месте сказано, что она используется только для остановки и запуска контейнера, например, при выполнении действий на хосте. В другой теме упоминается, что она инициализирует контейнер, но что именно означает «инициализация», непонятно
Инициализация означает, что если контейнер не существует, он будет создан. Если вы остановите и запустите его снова, будет остановлен и запущен тот же контейнер с теми же параметрами (например, настройки SMTP и другие переменные окружения). Однако, если сначала уничтожить контейнер, будет создан новый контейнер с новыми настройками окружения или он будет инициализирован заново.
Bootstrap создает новый образ Docker, что необходимо для «инициализации» запущенного контейнера.
Пересборка всегда срабатывает. Иногда она излишня, так как для применения настроек окружения (например, SMTP) достаточно уничтожить и запустить контейнер заново. Однако многие пользователи не разберутся в этих тонкостях, поэтому лучше просто рекомендовать им всегда выполнять пересборку, так как это гарантированно работает.
Использование: launcher КОМАНДА КОНФИГ [--skip-prereqs] [--docker-args СТРОКА]
Команды:
start: Запуск/инициализация контейнера
stop: Остановка работающего контейнера
restart: Перезапуск контейнера
destroy: Остановка и удаление контейнера
enter: Открытие оболочки для выполнения команд внутри контейнера
logs: Просмотр логов Docker для контейнера
bootstrap: Инициализация контейнера для конфигурации на основе шаблона
run: Выполнение указанной команды с конфигурацией в контексте последнего инициализированного образа
rebuild: Пересборка контейнера (удаление старого, инициализация, запуск нового)
cleanup: Удаление всех контейнеров, остановленных более чем на 24 часа
start-cmd: Генерация команды docker, используемой для запуска контейнера
Опции:
--skip-prereqs Не проверять предварительные требования запуска
--docker-args Дополнительные аргументы для передачи при запуске docker
--skip-mac-address Не назначать MAC-адрес
--run-image Переопределить образ, используемый для запуска контейнера
root@monstera:/var/discourse#