Хорошо, мне удалось устранить ошибку и воспроизвести её.
Кратко
- Возврат к ранее работавшей настройке S3, удаление и повторная установка компонента DiscoTOC приводит к успешной установке без ошибок.
- Отключение S3 закомментированием всех директив S3 в файле app.yml приводит к тому, что ошибка появляется снова при установке компонента. Предполагаю, что при обновлении ошибка также вернётся.
- Установка
DISCOURSE_USE_S3: falseне останавливает использование Discourse путей S3. Это похоже на ошибку, либо данная настройка не делает того, что я ожидаю.
Подробный обзор
Изначально я восстановил свой сервер minio, раскомментировал опции конфигурации в app.yml, пересобрал приложение и выполнил задачу s3:upload_assets. После того как сайт снова заработал, я перешёл в раздел компонентов. Уже установленный компонент DiscoTOC всё ещё показывал ошибку, однако при его удалении и повторной установке ошибка не появилась. Во время установки компонента DiscoTOC файл sprite.svg запрашивался с моего сервера S3.
В процессе попыток воспроизвести проблему я столкнулся с интересным вопросом. Похоже, что если оставить все директивы S3 в app.yml активными (т. е. не закомментированными), но установить DISCOURSE_USE_S3: false, то фронтенд сайта не загрузится, если minio не запущен.
Возможно, DISCOURSE_USE_S3: false не предназначен для отключения всего доступа к S3. Я предполагал, что это так, исходя из названия, но очевидно, что это не так. Как только я перезапускаю службу minio и обновляю фронтенд, всё работает нормально. Также в этом состоянии я могу удалить и установить компонент DiscoTOC без повторения ошибки. Это, по крайней мере, потенциальная ошибка.
Вот третье состояние, которое привело к воспроизводимой ошибке.
Чтобы снова заставить сайт работать без запущенного minio, я закомментировал все записи, связанные с S3, в конфигурации. Затем я пересобрал приложение, и теперь, когда minio не запущен, фронтенд загружается без проблем. Однако при удалении и повторной установке компонента DiscoTOC ошибка появляется снова. Я также попробовал запустить minio в этом состоянии, но ошибка снова проявилась при повторной установке. Вероятно, это связано с тем, что в app.yml нигде не были заданы директивы S3, поэтому даже если система пыталась обратиться к S3 в фоновом режиме, она делала это, используя значения по умолчанию, а не рабочую конфигурацию. Тем не менее, кажется, что некоторые изображения всё ещё пытаются загружаться с S3 даже после выполнения posts:rebake (например, 1531a70abda0d81d1a4039b6f3fa38bea79ef0de_2_180x180.png/xl.meta).