У меня есть GitHub Action, которая собирает образы, и она падает при попытке выполнить apt-get update. Я пока разбираюсь, в чём проблема, но на установке, которую я сделал 2 часа назад, при выполнении apt-get update внутри контейнера возникает следующая ошибка:
root@monstera-web-only:/# apt-get update
Получение:1 http://deb.debian.org/debian bullseye InRelease [116 кБ]
Получение:2 https://dl.yarnpkg.com/debian stable InRelease [17,1 кБ]
Получение:3 http://deb.debian.org/debian-security bullseye-security InRelease [48,4 кБ]
Получение:4 http://deb.debian.org/debian bullseye-updates InRelease [44,1 кБ]
Получение:5 http://deb.debian.org/debian bullseye-backports InRelease [49,0 кБ]
Получение:6 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease [91,7 кБ]
Получение:7 http://deb.debian.org/debian bullseye/main amd64 Packages [8 183 кБ]
Ошибка:2 https://dl.yarnpkg.com/debian stable InRelease
Следующие подписи недействительны: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
Получение:8 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages [216 кБ]
Получение:9 http://deb.debian.org/debian bullseye-updates/main amd64 Packages [14,6 кБ]
Получение:10 http://deb.debian.org/debian bullseye-backports/main amd64 Packages [384 кБ]
Получение:11 https://deb.nodesource.com/node_18.x bullseye InRelease [4 586 Б]
Получение:12 http://apt.postgresql.org/pub/repos/apt bullseye-pgdg/main amd64 Packages [268 кБ]
Получение:13 https://deb.nodesource.com/node_18.x bullseye/main amd64 Packages [774 Б]
Чтение списков пакетов... Готово
W: Ошибка GPG: https://dl.yarnpkg.com/debian stable InRelease: Следующие подписи недействительны: EXPKEYSIG 23E7166788B63E1E Yarn Packaging <yarn@dan.cx>
E: Репозиторий 'https://dl.yarnpkg.com/debian stable InRelease' не подписан.
N: Обновление из такого репозитория не может быть выполнено безопасно, поэтому по умолчанию отключено.
N: См. страницу справки apt-secure(8) для получения подробностей о создании репозиториев и настройке пользователя.
В нашем ежедневном CI для сборки образов изображений я не вижу никаких ошибок. Можете ли вы предоставить вывод команды cat /VERSION изнутри контейнера?
Я всё ещё проверяю свой CI, чтобы убедиться, что там нет какой-нибудь глупости (что вполне возможно). Не совсем понятно, что именно вызывает apt-get update.
РЕДАКТИРОВАНИЕ: В моём CI используется шаблон, который устанавливает vim. Он выполняет apt-get update. В обычной установке, насколько я вижу, apt-get update не выполняется, поэтому ваш CI не падает.
Многие шаблоны импорта и шаблоны обновления PostgreSQL (перечисленные ниже) выполняют apt-get update, так что это станет проблемой в какой-то момент.
Да, это будет моим следующим вопросом, так как выполнение такого обновления не является стандартной практикой и вносит изменения, которые трудно отследить, поскольку большинство сайтов используют статичную ОС и полагаются на новый образ для обновления компонентов на уровне операционной системы.
Если репозиторий yarn apt сломается, я предполагаю, что это также сломает нашу систему непрерывной интеграции (CI).
Я смогу проверить это на следующей неделе. Возможно, нам потребуется выпустить новый базовый образ для этого.
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev завершилась с ошибкой, код возврата #<Process::Status: pid 532 exit 100>
Место ошибки: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
Ошибка выполнения с параметрами {"cd"=>"$home", "cmd"=>["apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsqlite3-dev", "echo \"gem 'sqlite3'\" >> Gemfile", "su discourse -c 'bundle config unset deployment'", "su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'"]}
Из discourse-doctor я получил:
Проверка вашего доменного имени . . .
Подключение к xxx успешно.
Возможно, вам стоит удалить любые нестандартные плагины и пересобрать систему.
Попытка перезапуска существующего контейнера . . .
Обнаружена архитектура x86_64.
ПРЕДУПРЕЖДЕНИЕ: файл containers/app.yml доступен для чтения всем. Вы можете защитить этот файл, выполнив: chmod o-rwx containers/app.yml
Запуск существующего контейнера
+ /usr/bin/docker start app
Ошибка ответа от демона: драйвер не смог запрограммировать внешнее подключение для конечной точки app (c143632e34e1ae05e48759bdf163b4bbe5dc9aaf895f1fb7521f7e3784c26577): Ошибка запуска пользовательского прокси: listen tcp 0.0.0.0:443: bind: адрес уже используется
Ошибка: не удалось запустить контейнеры: app
Не удалось перезапустить контейнер.
Есть ли что-то, что я могу сделать, кроме чистой установки?}
@fidelio Привет! Вам нужно подключиться к другой базе данных, например SQLite, из экземпляра Discourse? То есть вы импортируете данные из другого форума? В противном случае вы можете отключить эту функцию, и обычный контейнер приложения Discourse пересоберётся без проблем.
Мне кажется, что он не обновился до PG 13 и использует шаблон pg12? Это проблема, которую всё равно нужно решить. И, скорее всего, требуется обновление ОС, а переход на новую виртуальную машину — это правильный шаг.
@pfaffman Ах, просто показалось странным, что в его логе ошибок сообщается о попытке установить libsqlite3-dev. Или Discourse обычно использует это для чего-то?
@fidelio Не могли бы вы скопировать сюда секцию templates: из вашего файла /var/discourse/containers/app.yml? Убедитесь, что вы не включили никакие пароли, которые могут находиться ниже в файле. Вы также можете запустить /var/discourse/discourse-doctor, и это поможет вам создать общедоступный отчет о конфигурации вашей системы.
Найден файл containers/app.yml
==================== НАСТРОЙКИ YML ====================
DISCOURSE_HOSTNAME=community.bfs-filmeditor.de
SMTP_ADDRESS=in-v3.mailjet.com
DEVELOPER_EMAILS=xxx
SMTP_PASSWORD=xxx
SMTP_PORT=25
SMTP_USER_NAME=xxx
LETSENCRYPT_ACCOUNT_EMAIL=xxx
==================== ИНФОРМАЦИЯ О DOCKER ====================
ВЕРСИЯ DOCKER: Docker version 18.06.1-ce, build e68fc7a
ПРОЦЕССЫ DOCKER (docker ps -a)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce58652241d9 local_discourse/app "/sbin/boot" 2 недели назад Запущен 14 минут назад 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp app
8e6b8ec432b4 local_discourse/mail-receiver "/sbin/boot" 11 месяцев назад Запущен 11 месяцев назад 0.0.0.0:25->25/tcp mail-receiver
ce58652241d9 local_discourse/app "/sbin/boot" 2 недели назад Запущен 14 минут назад 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp app
Контейнер Discourse app запущен
==================== ПЛАГИНЫ ====================
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/davidtaylorhq/discourse-whos-online.git
- git clone https://github.com/gdpelican/babble.git
- git clone https://github.com/angusmcleod/discourse-quick-messages.git
- git clone https://github.com/angusmcleod/discourse-events.git
- git clone https://github.com/discourse/discourse-calendar.git
- git clone https://github.com/discourse/discourse-data-explorer.git
- git clone https://github.com/davidtaylorhq/discourse-telegram-notifications.git
ПРЕДУПРЕЖДЕНИЕ:
Похоже, у вас установлены неофициальные плагины.
Если у вас возникают проблемы, попробуйте отключить их и снова выполнить пересборку.
Список официальных плагинов см. по ссылке: https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb
========================================
Версия Discourse на community.bfs-filmeditor.de: TYPO3 CMS
Версия Discourse на localhost: TYPO3 CMS
==================== ИНФОРМАЦИЯ О ПАМЯТИ ====================
ОЗУ (МБ): 4039
total used free shared buff/cache available
Mem: 3944 1272 1236 1067 1436 1364
Swap: 0 0 0
==================== ПРОВЕРКА МЕСТА НА ДИСКЕ ====================
---------- Место на диске ОС ----------
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 78G 60G 18G 78% /
---------- Место на диске контейнера ----------
Filesystem Size Used Avail Use% Mounted on
overlay 78G 60G 18G 78% /
/dev/vda1 78G 60G 18G 78% /shared
/dev/vda1 78G 60G 18G 78% /var/log
==================== ИНФОРМАЦИЯ О ДИСКЕ ====================
Диск /dev/vda: 80 ГиБ, 85899345920 байт, 167772160 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: C1F9A1FE-534C-4DAC-9299-5CC180C29DCE
Устройство Начало Конец Сектора Размер Тип
/dev/vda1 227328 167772126 167544799 79.9G Файловая система Linux
/dev/vda14 2048 10239 8192 4M Загрузочный раздел BIOS
/dev/vda15 10240 227327 217088 106M Базовый раздел Microsoft
Записи таблицы разделов не отсортированы по порядку на диске.
==================== КОНЕЦ ИНФОРМАЦИИ О ДИСКЕ ====================
Я отключил плагин quick messages, но ещё не удалил его.
GNU nano 2.9.3 containers/app.yml
## Это шаблон контейнера Docker Discourse «всё в одном», автономный
##
## После внесения изменений в этот файл вы ОБЯЗАНЫ выполнить пересборку
## /var/discourse/launcher rebuild app
##
## БУДЬТЕ *ОЧЕНЬ* ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ ИЛИ ВЫРАВНИВАНИИ!
## Посетите http://www.yamllint.com/, чтобы проверить этот файл при необходимости
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
- "templates/import/mbox.template.yml"
## Какие TCP/IP-порты должен открывать этот контейнер?
## Если вы хотите, чтобы Discourse использовал порт совместно с другим веб-сервером, например Apache или nginx,
## см. https://meta.discourse.org/t/17247 для деталей
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Установите db_shared_buffers максимум на 25% от общего объема памяти.
## Будет установлено автоматически при загрузке на основе обнаруженного объема ОЗУ, либо вы можете переопределить
db_shared_buffers: "1024MB"
## Может улучшить производительность сортировки, но увеличивает использование памяти на подключение
#db_work_mem: "40MB"
## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Сколько одновременных веб-запросов поддерживается? Зависит от объема памяти и количества ядер процессора.
## Будет установлено автоматически при загрузке на основе обнаруженного количества процессоров, либо вы можете переопределить
UNICORN_WORKERS: 4