فشل الترقية من Docker Manager beta7 إلى beta9

مرحبًا،
لدي مشكلة أثناء الترقية إلى أحدث إصدار من discourse (2.4.0 beta7 >> beta9). يتوقف مدير Docker عن الاستجابة بشكل متكرر عند الخطوة التالية:

/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:605:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:700:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:144:in `start'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'
Spinning up 1 Unicorn worker(s) that were stopped initially

إعادة التشغيل وإعادة تعيين الترقية لم تُحدث أي تأثير. هل لديك أي أفكار؟

شكرًا، تومي

يرجى الدخول إلى خادمك عبر SSH وإعادة البناء.

cd /var/discourse
git pull
./launcher rebuild app

حسناً، هذا ساعد، لكنني الآن أواجه تناقضاً بين المعلومات في قشرة لينكس (Linux shell) وواجهة مستخدم حاوية Discourse:

تقول صفحة المسؤول: تم تثبيت الإصدار 2.4.0.beta7، وأحدث إصدار هو 2.4.0.beta9، رغم أن صفحة /admi/upgrade تظهر “محدّثة” لـ Discourse (أحدث إصدار +88)، ومدير Docker، والإضافات.

يحتوي الملف /var/discourse/container/app.yml على إعدادات بريد إلكتروني تختلف عن تلك المعروضة في واجهة مستخدم Discourse.

يبدو أن شيئاً ما فشل أثناء إعادة البناء …

تومي

هل واجهت أي أخطاء أثناء إعادة البناء؟
إذا كان الأمر كذلك، فإن مشاركتها ستساعد كثيرًا في فهم ما حدث.

حسنًا، كررت عملية إعادة البناء مرة أخرى، لكنني لا أرى أي أخطاء واضحة أثناء إعادة البناء في السجلات، بل فقط رسائل بمستوى INFO. السطور الأخيرة هي:

2020-01-05 12:01:12.911 UTC [53] LOG:  shutting down
166:M 05 Jan 2020 12:01:13.087 * DB saved on disk
166:M 05 Jan 2020 12:01:13.087 # Redis is now ready to exit, bye bye...
2020-01-05 12:01:13.669 UTC [49] LOG:  database system is shut down
sha256:da70fb2de1f09e179e7b603a2e3aa17140229011b7af40b28eea4615d3fceeb6
9e56de01e8b7c16e0e24c1221ab32cf161b6b9ecd2e9bfd6f722f5226498d3cc
Removing old container
+ /usr/bin/docker rm app
app

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=de_DE.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -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 LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_HOSTNAME=forum.netzwissen.de -e DISCOURSE_DEVELOPER_EMAILS=admin@netzwissen.de -e DISCOURSE_SMTP_ADDRESS=10.10.10.19 -e DISCOURSE_SMTP_PORT=25 -e DISCOURSE_SMTP_USER_NAME= -e DISCOURSE_SMTP_PASSWORD= -e LETSENCRYPT_ACCOUNT_EMAIL=me@example.com -h develd-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:b7:65:5c:bd:c6 local_discourse/app /sbin/boot
7201804f7d5312ceee286af3a5e7db6e3e57a5327504ce752252f238aa9a4e98

وهذا يبدو طبيعيًا بقدر ما أستطيع التخمين… معلمات البريد الإلكتروني المعروضة هنا صحيحة وتعكس تلك الموجودة في ملف app.yml. لكن واجهة المستخدم لا تزال تعرض بيانات قديمة…

يبدو هذا طبيعيًا تمامًا بالنسبة لي. لا أستطيع التفكير في سبب يجعل واجهة المستخدم تعرض بيانات قديمة.

… نعم، أنا أيضًا لا أفهم الأمر. لا يزال الحاوي يستخدم بيانات إعداد قديمة لإرسال البريد (وبالتالي لا يتم تسليمها)، على الرغم من أن السطور الأخيرة من عملية إعادة البناء تُظهر خادم SMTP الهدف الصحيح:

  • /usr/bin/docker run -[..]
    DISCOURSE_SMTP_ADDRESS=10.10.10.19 -e DISCOURSE_SMTP_PORT=25 -e
    DISCOURSE_SMTP_USER_NAME= -e DISCOURSE_SMTP_PASSWORD= -e

هذا يعني بالنسبة لي أن التحديث فشل ولا نزال نعمل بإصدار أقدم داخل حاوية Docker بالإضافة إلى إعدادات أقدم من ملف app.yml - على الرغم من أن صفحة التحديث تحكي قصة مختلفة:

هل لدىكم أي أفكار حول كيفية إصلاح هذا؟

أواجه نفس المشكلة في نسختين من Discourse.

يبدو أن الخطأ الأول هو هذا:

*** جاري تجميع الأصول. سيستغرق هذا بعض الوقت *** $ RUBY_GC_MALLOC_LIMIT_MAX=20971520 RUBY_GC_OLDMALLOC_LIMIT_MAX=20971520 RUBY_GC_HEAP_GROWTH_MAX_SLOTS=50000 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9 bundle exec rake assets:precompile جاري مسح الملفات المؤقتة جاري تجميع الأصول I, [2020-01-08T13:52:00.932032 #29478] INFO -- : الكتابة في /var/www/discourse/public/assets/docker-manager-app-888922f3ec4fc42543c1916f533f3fecb9af503803eb6b8b59904a2310219d1d.js I, [2020-01-08T13:52:01.102633 #29478] INFO -- : الكتابة في /var/www/discourse/public/assets/docker-manager-app-5256678af40d7479a0d37d3bddcca6fa5c2505b83a654a6d23e9d6f4f5fd406a.css I, [2020-01-08T13:52:01.277866 #29478] INFO -- : الكتابة في /var/www/discourse/public/assets/docker-manager-vendor-91af87077979e715f4d5034ea05c612f734c3aece05878051e901d07e84878ee.js تخطي: vendor-a681e94dd2b8c886f184865617b09b4f67b433321acef2bd98bb99bd9495307e.js مضغوط بالفعل #<Thread:0x0000559b93cea1d8@/var/www/discourse/lib/tasks/assets.rake:223 run> انتهى مع استثناء (report_on_exception is true): /usr/local/lib/ruby/2.6.0/net/http.rb:949:in `rescue in block in connect': فشل في فتح اتصال TCP إلى geolite.maxmind.com:443 (getaddrinfo: اسم أو خدمة غير معروف) (SocketError) من /usr/local/lib/ruby/2.6.0/net/http.rb:946:in `block in connect' من /usr/local/lib/ruby/2.6.0/timeout.rb:93:in `block in timeout' من /usr/local/lib/ruby/2.6.0/timeout.rb:103:in `timeout' من /usr/local/lib/ruby/2.6.0/net/http.rb:945:in `connect' من /usr/local/lib/ruby/2.6.0/net/http.rb:930:in

وفي الأسفل:

تم ضغط docker-manager-vendor-91af87077979e715f4d5034ea05c612f734c3aece05878051e901d07e84878ee.js بنجاح: 0.12 ثانية تم ضغط جميع ملفات JS بنجاح: 4.44 ثانية rake aborted! SocketError: فشل في فتح اتصال TCP إلى geolite.maxmind.com:443 (getaddrinfo: اسم أو خدمة غير معروف) /var/www/discourse/lib/final_destination.rb:414:in `safe_session' /var/www/discourse/lib/final_destination.rb:365:in `safe_get' /var/www/discourse/lib/final_destination.rb:131:in `get' /var/www/discourse/lib/file_helper.rb:47:in `download' /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download' /var/www/discourse/lib/tasks/assets.rake:226:in `block (3 levels) in <top (required)>' /var/www/discourse/lib/tasks/assets.rake:225:in `each' /var/www/discourse/lib/tasks/assets.rake:225:in `block (2 levels) in <top (required)>' سبب: SocketError: getaddrinfo: اسم أو خدمة غير معروف /var/www/discourse/lib/final_destination.rb:414:in `safe_session' /var/www/discourse/lib/final_destination.rb:365:in `safe_get' /var/www/discourse/lib/final_destination.rb:131:in `get' /var/www/discourse/lib/file_helper.rb:47:in `download' /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download' /var/www/discourse/lib/tasks/assets.rake:226:in `block (3 levels) in <top (required)>' /var/www/discourse/lib/tasks/assets.rake:225:in `each' /var/www/discourse/lib/tasks/assets.rake:225:in `block (2 levels) in <top (required)>' المهام: TOP => assets:precompile (راجع التتبع الكامل بتشغيل المهمة مع --trace) Docker Manager: فشل الترقية #<RuntimeError: RuntimeError> /var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:159:in `run' /var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:81:in `upgrade' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:95:in `block in upgrade' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:91:in `fork' /var/www/discourse/plugins/docker_manager/app/controllers/docker_manager/admin_controller.rb:91:in `upgrade' /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/basic_implicit_render.rb:6:inbox_tray:

سأحاول إعادة البناء، لكنني ما زلت أتساءل عن سبب هذه المشاكل في الترقية…