Во время обновления я выполнил команду cd /var/discourse; git pull; ./launcher rebuild app.
Появились сообщения «Обновление завершено» и «Обновление PostgreSQL завершено». Последнее советует выполнить «сборку снова», хотя, похоже, это ничего не меняет.
Несмотря на то, что обновление завершено, запустить приложение не удаётся. Команда ./launcher start app выдаёт следующую ошибку:
Не удалось найти образ 'local_discourse/app:latest' локально
/usr/bin/docker: Ошибка ответа от демона: доступ к извлечению для local_discourse/app запрещён, репозиторий не существует или может потребоваться 'docker login'.
См. '/usr/bin/docker run --help'.
Приложение снова запустить не удаётся, и я не знаю, как действовать дальше.
Команда ./discourse-doctor не помогает (она лишь определяет, что приложение не запущено, пытается выполнить сборку и перезапуск, но в итоге возникает та же ошибка).
Прикрепить файл не могу, так как я новый пользователь, поэтому вот фрагмент из лога отладки, который, как я считаю, имеет отношение к делу:
Не удалось выполнить сборку приложения.
Проверка вашего доменного имени . . .
Соединение с community.gingkoapp.com успешно.
Вам, вероятно, следует удалить любые нестандартные плагины и выполнить сборку заново.
Попытка перезапуска существующего контейнера . . .
+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=2 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e DISCOURSE_DEVELOPER_EMAILS=REDACTED -e DISCOURSE_HOSTNAME=community.gingkoapp.com -e DISCOURSE_SMTP_ADDRESS=smtp.mailgun.org -e DISCOURSE_SMTP_USER_NAME=postmaster@community.gingkoapp.com -e DISCOURSE_SMTP_PASSWORD=REDACTED -h community-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 2222:22 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:fc:04:ee:f5:11 local_discourse/app /sbin/boot
Не удалось найти образ 'local_discourse/app:latest' локально
/usr/bin/docker: Ошибка ответа от демона: доступ к извлечению для local_discourse/app запрещён, репозиторий не существует или может потребоваться 'docker login'.
См. '/usr/bin/docker run --help'.
Не удалось перезапустить контейнер.
Я работаю в среде с ограниченным пространством (мне постоянно предлагают попытаться очистить образы), поэтому это звучит как правдоподобная причина сбоя.
Не уверен, как это сделать без веб-интерфейса (или curl к API), учитывая, что он недоступен. Но я займусь этим. Сначала я увеличу размер диска своего droplet и посмотрю, поможет ли это.
(если только вы не имели в виду, что моя версия docker устарела?)
Да, именно этим я сейчас и занимаюсь. Должно быть намного быстрее, чем обновление текущей системы… Дай бог, чтобы я смог восстановить данные из резервных копий (к которым у меня всё ещё есть доступ на старом сервере).
Кто сказал, что это поддерживается? Любая версия Docker старше нескольких лет даже не поддерживается её разработчиком, так что как вы ожидаете, что Discourse будет её поддерживать?
Всё в порядке. Я развернул новый Droplet в Digital Ocean и восстановил резервную копию. Последняя резервная копия, кажется, была повреждена, но, по крайней мере, я потерял всего один-два поста и успешно восстановил данные из предыдущей резервной копии.