لا شيء معروض في إعادة بناء المشغل

أحاول اتباع الدليل لإضافة دعم لمكتبة MySQL إلى حاوية التطبيق عبر البرنامج التعليمي: Use an import script that requires MySQL - #4 by pfaffman

ومع ذلك، عند تشغيل الأوامر التالية، يتوقف الأمر فجأة:

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

image
حتى أقوم بإنهاء العملية باستخدام CTRL+C.

ملاحظة: لقد انتظرت أكثر من بضع ساعات لظهور أي استجابة، لكن لم يحدث شيء.

وعند فحص حاويات Docker، يظهر حاوية جديدة (تالفة) متوقفة:

image

لا أعرف ما الخطأ الذي أقوم به والذي يؤدي إلى هذا السلوك.

محتويات ملف containers/import.yml الخاص بي (بعد إزالة الأجزاء غير الملموسة):

السيرفر مستضاف على DigitalOcean، وعند إعادة تشغيل خدمة Docker، تعود الحاوية الأصلية للتطبيق لتعمل مرة أخرى.

image

ملاحظة جانبية: أمر ./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] The `--path` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set path 'vendor/bundle'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set without 'test development'`, and stop using this flag
You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.

If this is a development machine, remove the /var/www/discourse/Gemfile freeze 
by running `bundle config unset deployment`.

The dependencies in your gemfile changed

You have added to the Gemfile:
* mysql2
I, [2020-02-27T16:51:34.670930 #1]  INFO -- : 
I, [2020-02-27T16:51:34.672542 #1]  INFO -- : Terminating async processes
I, [2020-02-27T16:51:34.673101 #1]  INFO -- : Sending INT to 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 -- : Sending TERM to 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:  received fast shutdown request
166:signal-handler (1582822294) Received SIGTERM scheduling shutdown...
2020-02-27 16:51:34.682 UTC [49] LOG:  aborting any active transactions
166:M 27 Feb 2020 16:51:34.693 # User requested shutdown...
166:M 27 Feb 2020 16:51:34.695 * Saving the final RDB snapshot before exiting.
2020-02-27 16:51:34.698 UTC [49] LOG:  worker process: logical replication launcher (PID 58) exited with exit code 1
2020-02-27 16:51:34.701 UTC [53] LOG:  shutting down
166:M 27 Feb 2020 16:51:34.741 * DB saved on disk
166:M 27 Feb 2020 16:51:34.742 # Redis is now ready to exit, bye bye...
2020-02-27 16:51:34.786 UTC [49] LOG:  database system is shut down


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development' failed with return #<Process::Status: pid 970 exit 16>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"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
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

هل يعرف أحد شيئاً عن هذا الخطأ من فضلك؟

أواجه مشكلات مماثلة. يبدو أن هذا مطابق للموضوع التالي: 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 فقط…