root@www:/var/discourse# ./launcher start data
Обнаружена архитектура x86_64.
+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -h www-data -e DOCKER_HOST_IP=172.17.0.1 --name data -t -v /var/discourse/shared/data:/shared -v /var/discourse/shared/data/log/var-log:/var/log --mac-address 02:e6:17:cc:a2:dc local_discourse/data /sbin/boot
Не удалось найти образ 'local_discourse/data:latest' локально
docker: Ошибка ответа от демона: доступ к загрузке для local_discourse/data запрещен, репозиторий не существует или может потребоваться 'docker login': отказано: запрошенный доступ к ресурсу запрещен
Запустите 'docker run --help' для получения дополнительной информации
root@www:/var/discourse#
Есть какие-нибудь предложения? Поиск по этому сообщению об ошибке выдает только эту тему.
Это указывает на то, что, возможно, вы выполнили ./launcher cleanup и удалили контейнер с данными (я не вижу другого способа, при котором контейнер мог бы отсутствовать, но могу ошибаться). Если это так, и вообще в любом случае, я бы создал новый дроплет, скопировал ваши файлы yml и восстановил последнюю резервную копию.
Если вы предпочитаете готовое решение, а не изучение процесса, вы можете связаться со мной или задать вопрос в канале Marketplace.
Чтобы вернуть сайт в рабочее состояние после удаления контейнера с данными, нужно было отредактировать файл data.yml, изменить шаблон на postgres13, а затем пересобрать контейнер с данными. После этого стало возможным запустить контейнер с данными, уничтожить и снова запустить контейнер web_only (он не подключится к другому контейнеру с данными, отличному от того, с которым был создан изначально). После этого сайт снова заработал.
Я почти уверен, что повторная попытка обновления базы данных увенчалась бы успехом, но для надёжности я создал свежую резервную копию базы данных, перенёс его на новый дроплет, восстановил базу данных, и теперь он снова работает.
Не могли бы вы кратко рассказать о том, как возникла эта проблема, например, чтобы успокоить других и заверить их, что это, скорее всего, их не коснётся?
TL;DR: нет.
Я не могу сказать, в чём была первоначальная проблема. Переключение на шаблон pg13 стало решением, когда контейнер был удалён. Это часть того, что рекомендуется в теме про pg15. Возможно, в какой-то момент была проблема с местом на диске?
Ах, теперь я понимаю… это было обновление довольно старой системы на базе pg13? То есть довольно редкая ситуация.
Обновление не удалось, так как для обновления PostgreSQL требовалось 14 ГБ свободного места на диске, а у дроплета его было чуть меньше.
Причина, по которой это не сработало после расширения дискового пространства, возможно, заключается в том, что, как предложил выше @Jagster, я выполнил ./launcher cleanup, что не подходит для установки с двумя контейнерами.
В какой-то момент я хотел бы перейти на установку с одним контейнером, поскольку она кажется менее проблематичной для тех, кто не очень хорошо разбирается в архитектуре Discourse. Я также предпочёл бы не заниматься самостоятельным хостингом, но на сайте много фотографий, а стоимость хостинга Discourse выросла с 100 до 200 долларов в месяц, когда у нас закончилось дисковое пространство. Сайт приносит всего около 30–40 долларов в месяц от Google Ads.
Я перешел на Digital Ocean всего два года назад.
И всё же я сделал это неделю назад, когда у меня закончилось место.
@pfaffman предположил, что это могла быть проблема. Я понятия не имею.
Нет. Это привело бы к той же проблеме и в конфигурации с одним контейнером.
Проблема заключалась в том, что при попытке освободить место на диске вы уничтожили остановленный контейнер с данными. Ключевой ошибкой, на мой взгляд, было выполнение очистки, пока контейнеры данных и веб-сервера были остановлены.
Конфигурация с двумя контейнерами спасла вас от некоторых проблем, так как позволила отложить обновление PostgreSQL. Однако в данном случае вы застряли, потому что обновление добавило плагин AI, что вынудило вас выполнить обновление PostgreSQL в контейнере с данными.
Возможно, если бы очистка launcher была выполнена до попытки обновления или если бы вы вообще её не выполняли и просто изменили размер.
Таким образом, возникло несколько проблем:
- Возможно, слишком много образов Docker заполняли диск (или диск был слишком мал)
- Требовалось обновление PostgreSQL
- Плагин AI был добавлен в ядро, что вынудило выполнить обновление базы данных
- Обновление PostgreSQL не удалось по какой-то причине, и вы не знали, что нужно запустить контейнер с данными (я думаю, в сообщении об этом сказано)
- Выполнение
launcher cleanupпри остановленном контейнере с данными, что привело к удалению контейнера, который необходимо было запустить для корректного завершения работы
Единственное, что я сделал для освобождения места на диске, — изменил размер дроплета.
Всё остальное я делал, пытаясь завершить неудачное обновление, следуя рекомендациям из вывода команд, сообщений здесь или в связанных темах.
@pfaffman мой сайт завален явным спамом. Возможно, какое-то анти-спам-средство потерялось при обновлении?
Это маловероятно. Не знаю, был ли когда-либо настроен Akismet, но сейчас он уже не очень эффективен. Сейчас рекомендуется следующее: Discourse AI - Spam detection Плагин AI теперь является частью ядра и установлен.
Если вам нужна помощь, вы можете написать мне на электронную почту.
РЕДАКТИРОВАНИЕ: Возможно, но маловероятно, что изменение, описанное здесь, может объяснить рост количества спама.