Ничего не отображается при пересборке лаунчера

Я пытаюсь следовать руководству по добавлению поддержки MySQL gem в контейнер приложения через урок Use an import script that requires MySQL - #4 by pfaffman

Однако при запуске следующего команда просто зависает.

> ./launcher stop app
> ./launcher rebuild import

image
Пока я не убью процесс комбинацией CTRL+C.

Примечание: Я ждал более нескольких часов, чтобы увидеть какой-либо отклик, но ничего не произошло.

При проверке контейнеров Docker отображается новый (повреждённый) остановленный контейнер.

image

Я не уверен, что делаю не так, что приводит к такому поведению.

Содержимое моего файла containers/import.yml (удалена неизменённая часть):

Сервер размещён на DO, и при перезапуске службы Docker возвращается оригинальный работающий контейнер приложения.

image

P.S: ./launcher rebuild app работает нормально.

Может, стоит выполнить ./launcher stop app; перед попыткой собрать import?

РЕДАКТИРОВАНИЕ:

Чёрт.

Да, конечно, я запускаю rebuild после подкоманды stop. Позвольте мне отредактировать свой вопрос.

Хорошо, я понял. После остановки контейнера

> ./launcher stop app

я также удалил контейнер командой docker rm app и попытался пересобрать его после этого, и процесс пошёл дальше.

Теперь, когда доходит до этапа использования шаблона mysql-dep, возникает следующая ошибка.

...
Setting up libgmp-dev:amd64 (2:6.1.2+dfsg-4) ...
Setting up nettle-dev:amd64 (3.4.1-1) ...
Setting up libgnutls28-dev:amd64 (3.6.7-4+deb10u2) ...
Setting up libmariadb-dev (1:10.3.22-0+deb10u1) ...
Processing triggers for libc-bin (2.28-10) ...

I, [2020-02-27T16:51:33.937186 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without "test development"'
[DEPRECATED] Флаг `--path` устарел, так как он полагается на сохранение между вызовами bundler, чего bundler больше не будет делать в будущих версиях. Вместо этого используйте `bundle config set path 'vendor/bundle'` и прекратите использовать этот флаг.
[DEPRECATED] Флаг `--without` устарел, так как он полагается на сохранение между вызовами bundler, чего bundler больше не будет делать в будущих версиях. Вместо этого используйте `bundle config set without 'test development'` и прекратите использовать этот флаг.
Вы пытаетесь установить в режиме развёртывания после изменения
файла Gemfile. Запустите `bundle install` в другом месте и добавьте
обновлённый файл Gemfile.lock в систему контроля версий.

Если это машина для разработки, удалите блокировку /var/www/discourse/Gemfile,
запустив `bundle config unset deployment`.

Зависимости в вашем файле gemfile изменились.

Вы добавили в Gemfile:
* mysql2
I, [2020-02-27T16:51:34.670930 #1]  INFO -- : 
I, [2020-02-27T16:51:34.672542 #1]  INFO -- : Завершение асинхронных процессов
I, [2020-02-27T16:51:34.673101 #1]  INFO -- : Отправка INT для HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid: 49
I, [2020-02-27T16:51:34.673593 #1]  INFO -- : Отправка TERM для exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 166
2020-02-27 16:51:34.674 UTC [49] LOG:  получен запрос на быстрое завершение работы
166:signal-handler (1582822294) Получен SIGTERM, планирование завершения работы...
2020-02-27 16:51:34.682 UTC [49] LOG:  отмена любых активных транзакций
166:M 27 Feb 2020 16:51:34.693 # Пользователь запросил завершение работы...
166:M 27 Feb 2020 16:51:34.695 * Сохранение финального снимка RDB перед выходом.
2020-02-27 16:51:34.698 UTC [49] LOG:  рабочий процесс: запускатель логической репликации (PID 58) завершён с кодом выхода 1
2020-02-27 16:51:34.701 UTC [53] LOG:  завершение работы
166:M 27 Feb 2020 16:51:34.741 * База данных сохранена на диск
166:M 27 Feb 2020 16:51:34.742 # Redis теперь готов к выходу, до свидания...
2020-02-27 16:51:34.786 UTC [49] LOG:  система баз данных завершена


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development' завершился с ошибкой #<Process::Status: pid 970 exit 16>
Место ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
Выполнение не удалось с параметрами {"cd"=>"$home", "cmd"=>["echo \"gem 'mysql2'\" >> Gemfile", "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmariadb-dev", "su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'"]}
75b27d60e1dc3a4b5d76bc75f2874ebf405fe29edfebec3cb809233f7b01ec48
** НЕ УДАЛОСЬ ЗАПУСТИТЬ ** пожалуйста, прокрутите вверх и поищите сообщения об ошибках, их может быть больше одной.
./discourse-doctor может помочь диагностировать проблему.

Кто-нибудь знает что-нибудь об этой ошибке, пожалуйста?

У меня возникли похожие проблемы. Это выглядит так же, как в Failed to bootstrap using import template.

Я не собирался пытаться обновить этот контейнер, так как видел это сообщение, но попробовал всё же из-за другой странной ошибки.

РЕДАКТИРОВАНИЕ: Я добавил

su discourse -c 'bundle config unset deployment'

в шаблон перед строкой

 su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without "test development"'

и теперь всё работает. (Но, увы, это не решило мою несвязанную проблему).

Я буквально использовал этот шаблон на прошлой неделе, и всё было в порядке. Довольно странно, но стоит посмотреть на него на следующей неделе. Я добавлю его в свой список.

У меня тоже! Но, наверное, что-то изменилось после обновления?

В дополнение к комментарию, мне также пришлось пропустить предварительные требования лаунчера:

> ./launcher rebuild import --skip-prereqs

и, следуя совету @pfaffman:

образ был успешно собран. :white_check_mark:

Похоже, здесь это уже решено — @pfaffman @rahilqf, вы можете подтвердить?

Кажется, да. Большое спасибо!

Если бы только был шаблон, который добавляет php-serialize