Валидация YML перед пересборкой?

Это установка Discourse на собственном хостинге в приватном VPS с типичной установкой Docker.

Я снова проделал следующее:
Я дождался двухчасовой «безупречной» пересборки обновления до версии v3.4.0.beta2-dev.
Затем добавил несколько строк в файл app.yml и снова ждал пару часов для следующей пересборки.
(Почему операции разделены? Потому что двойной удар никогда не бывает хорошим, если есть потенциальная возможность ошибок.)
Позже я обнаружил ошибки времени выполнения в логах, потому что забыл пробелы в app.yml (для учетной записи MaxMind и ключа).
Поэтому сегодня вечером мне нужно сделать еще одну пересборку.

Это более шести часов виртуального простоя, в то время как сайт на WordPress или другой CMS в точно такой же ситуации занял бы всего несколько минут. Это кричит о «плохом UX» и, следовательно, «анти-маркетинге» — это просто плохо для платформы.

Единственная причина, по которой мне пришлось сделать вторую пересборку, — это добавление этих проклятых двух строк. Я очень хочу, чтобы полная пересборка не была необходима только из-за такого небольшого изменения в конфигурационном файле.

  1. Были ли какие-либо обсуждения о валидации файла YAML перед пересборкой? Эта простая функция позволила бы избежать длительной операции и последующих проблем.

  2. Были ли какие-либо обсуждения о предварительном процессоре, который определяет, требуется ли полная пересборка после определенных изменений?

  3. Я удивлен, что ошибка YAML не была зафиксирована в логах. Есть ли причина, по которой основной папка .yml времени выполнения и, возможно, другие не проверяются на синтаксические ошибки? … Или более опытные администраторы проводят собственную проверку (linting) перед пересборкой? :thinking:

Я размещаю систему в Docker, потому что считаю, что это «самая простая» платформа, если/когда я передам эту систему кому-то другому для обслуживания. Если это неверно, и я выбрал не только «не самую простую», но и «самую медленную» установку, возможно, мне стоит рассмотреть другой вариант установки.

Спасибо!

Двухконтейнерная настройка позволяет собрать новый контейнер, пока старый продолжает работать, поэтому простой составляет всего минуту или около того, пока новый контейнер запускается.

Это очень быстрое время восстановления. Я полагаю, вы используете Raspberry Pi или что-то ещё, что работает очень медленно?

Обычно при проблеме с конфигурационным файлом yml вы получаете уведомление сразу же.

Вы можете проверить размер файла, используя этот код, а затем проанализировать, является ли проблема нехваткой места:

/var/discourse# du -sh /* | sort -h

Кроме тех двух пробелов с MaxMind. Оно проходит, но гео-функции не работают. Так что это не ошибка синтаксиса YAML как таковая, но всё равно ошибка :man_shrugging: