حاويات العينات التي تم اجتيازها في النسخة التجريبية/الاختبارات لا تبدأ

قبل الشروع في هذه الرحلة معي، يرجى ملاحظة أنه على الرغم من أن هذا الخطأ قد تم ذكره بالفعل في هذا المنتدى مرتين (واحد و اثنان)، فإن حل “إعادة بناء حاوية البيانات” لم ينجح. أعمل ببيانات فارغة تمامًا، وأقوم بحذف جميع الحاويات/وحدات التخزين/مجلدات التخزين بين المحاولات.

يرجى ملاحظة أنني أستند في اختباراتي إلى الملفات النموذجية المقدمة. إنها ليست إضافة، وقد حاولت إزالة جميع الإضافات.


أواجه مشاكل في بدء حاويات فارغة لأحدث فروع tests-passed و beta. يعمل Stable كما هو متوقع. يحدث الخطأ مع standalone أو web-only (بعد بدء data، بالطبع).

لاستبعاد أخطاء التكوين، قمت بالخطوات التالية:

  • نسخت ملف samples/standalone.yml إلى containers/
  • قمت بتغيير الأشياء التالية فقط في الملف:
    • تغيير عنوان SMTP إلى قيمة وهمية
    • تغيير عنوان discourse إلى قيمة وهمية
    • تغيير موقع البيانات المشتركة
    • إزالة 443، وتغيير تعيين المنفذ 80. إليك النتيجة standalone.yml
    • تشغيل ./laucher rebuild standalone. إليك السجلات الكاملة rebuilding_standalone.txt

وأحصل على الخطأ التالي:

RubyZip 3.0 is coming!
**********************

The public API of some Rubyzip classes has been modernized to use named
parameters for optional arguments. Please check your usage of the
following classes:
  * `Zip::File`
  * `Zip::Entry`
  * `Zip::InputStream`
  * `Zip::OutputStream`

Please ensure that your Gemfiles and .gemspecs are suitably restrictive
to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
See https://github.com/rubyzip/rubyzip for details. The Changelog also
lists other enhancements and bugfixes that have been implemented since
version 2.3.0.

I, [2022-07-24T01:58:05.415957 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake plugin:pull_compatible_all'
bundler: failed to load command: rake (/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake)
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:308:in `check_for_activated_spec!': You have already activated uri 0.10.0, but your Gemfile requires uri 0.11.0. Since uri is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports uri as a default gem. (Gem::LoadError)
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:25:in `block in setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `map'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler.rb:162:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:136:in `with_level'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:88:in `silence'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `<top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `require_relative'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `kernel_load'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:23:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:483:in `exec'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:31:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:25:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:48:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:36:in `<top (required)>'
	from /usr/local/bin/bundle:23:in `load'
	from /usr/local/bin/bundle:23:in `<main>'
I, [2022-07-24T01:58:05.702191 #1]  INFO -- : 
I, [2022-07-24T01:58:05.702665 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
bundler: failed to load command: rake (/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake)
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:308:in `check_for_activated_spec!': You have already activated uri 0.10.0, but your Gemfile requires uri 0.11.0. Since uri is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports uri as a default gem. (Gem::LoadError)
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:25:in `block in setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `map'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler.rb:162:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:136:in `with_level'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:88:in `silence'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `<top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `require_relative'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `kernel_load'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:23:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:483:in `exec'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:31:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:25:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:48:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:36:in `<top (required)>'
	from /usr/local/bin/bundle:23:in `load'
	from /usr/local/bin/bundle:23:in `<main>'
I, [2022-07-24T01:58:05.953429 #1]  INFO -- : 

لقد جربت أيضًا نهج الحاويتين، مع data و web_only. تعاني حاوية web_only من نفس المشكلة.

بين كل محاولة، أقوم بإيقاف وإزالة جميع الحاويات، وأقوم أيضًا بإزالة جميع مجلدات البيانات.

فرع Stable يعمل بشكل جيد. لا أعتقد أن هذا متوقع.


لتقديم سياق، أنا الآن في وضع سيء للغاية.
أحتاج إلى ترحيل تثبيت discourse الخاص بي بشكل عاجل من الخادم الحالي إلى خادم جديد، حيث سيتم إيقاف تشغيل الخادم الحالي في غضون أيام قليلة.
الخادم الحالي في 2.9.0.beta7. يمكنني بدء خادم جديد في 2.8.6، لكن لا يمكنني تطبيق نسخة احتياطية من الخادم الحالي على الخادم الجديد، لأنه تخفيض. وأنا غير قادر على بدء خادم فارغ جديد على 2.9.0.beta7، لأنه يعطي الخطأ المذكور أعلاه.
مجلد البيانات الخاص بي في الخادم الحالي كبير بما يكفي وليس لدي مساحة كافية في القرص لضغطه ونسخه إلى مكان ما؛ حتى لو فعلت ذلك، أفترض أنه ستكون هناك عواقب على استخدام البيانات من إصدار تجريبي أحدث في إصدار أقدم. لقد حاولت أيضًا “تخفيض” الخادم الحالي، فقط في حالة، لكنني أعرف أنه غير مدعوم ولم ينجح على أي حال.

لماذا تضطر إلى خفض المستوى؟ لماذا لا يمكنك التأكد من أن المضيف المستهدف هو الأحدث؟

إعجابَين (2)

لا أريد التخفيض. لكن لا يمكنني بدء خادم جديد على 2.9.0.beta7 بناءً على رسالة الخطأ التي وضعتها في هذا المنشور. لا يمكنني سوى بدء خادم جديد على 2.8.6. لقد جربت العديد من التكوينات المختلفة بناءً على الملفات النموذجية وملفاتي الخاصة، ولم يبدأ أي من beta أو tests-passed. لست متأكدًا مما إذا كانت هذه المعلومات غير واضحة في الرسالة الأولى، أو ملف الحاويات، أو ملفات السجل.

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

الخادم القديم يعمل على 2.9.0.beta7 في الوقت الحالي. لذلك، إما أنني بحاجة إلى خادم جديد يمكنني البدء به على أحدث إصدار (وهو ما لا يعمل)، أو أحتاج إلى طريقة لنقل البيانات إلى 2.8.6 جديد، وهو الإصدار الوحيد الذي تمكنت من بدء تشغيله.

إعجاب واحد (1)

آسف، فهمت الآن. هل نحتاج إلى التركيز على هذا الخطأ؟

من الناحية المثالية، نعم. الحصول على الخادم الجديد بأحدث إصدار سيكون أبسط وأسهل بالنسبة لي.

ولكن إذا لم يكن ذلك ممكنًا لأي سبب من الأسباب، وإذا كان هناك أي حل بديل آخر يمكنني استخدامه، فسأكون مهتمًا أيضًا. لست في وضع يسمح لي بأن أكون متعصبًا بشأن الإصدارات.

أيضًا، إذا كان ذلك مفيدًا، فهذه هي معلومات دوكر على الخادم:

# docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 2
  Running: 0
  Paused: 0
  Stopped: 2
 Images: 5
 Server Version: 20.10.12
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: nvidia runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
 Default Runtime: runc
 Init Binary: docker-init
 containerd version:
 runc version:
 init version:
 Security Options:
  apparmor
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.15.0-41-generic
 Operating System: Ubuntu 22.04 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 5.797GiB
 Name: maji
 ID: OIRP:TYAE:HIPS:SIF3:NZRF:22QI:GO5A:64A4:OP2O:ALVA:PPLN:4TOH
 Docker Root Dir: /data/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

أقوم بتشغيل المشغل كـ root. الآن، لقد كنت أقوم بتشغيل جميع أنواع حاويات دوكر على أجهزة بنفس التكوين، ولم أواجه أي مشاكل.

الآن، لست متأكدًا مما إذا كانت المشكلة قد تكون أذونات الملفات المحتملة، فالخطأ لا يقودني إلى التفكير في ذلك على الإطلاق.

/opt/discourse# ls -la
total 140
drwxr-xr-x 14 root root  4096 Jul 24 01:26 .
drwxr-xr-x  7 root root  4096 Jul 15 07:23 ..
drwxr-xr-x  8 root root  4096 Jul 24 02:30 .git
drwxr-xr-x  3 root root  4096 Jul 15 07:23 .github
-rw-r--r--  1 root root   309 Jul 15 07:23 .gitignore
-rw-r--r--  1 root root  1099 Jul 15 07:23 LICENSE
-rw-r--r--  1 root root  8285 Jul 15 07:23 README.md
drwxr-xr-x  2 root root  4096 Jul 15 07:23 bin
drwxr-xr-x  2 root root  4096 Jul 24 02:34 cids
drwxr-xr-x  2 root root  4096 Jul 24 02:30 containers
-rwxr-xr-x  1 root root 11956 Jul 15 07:23 discourse-doctor
-rwxr-xr-x  1 root root 27053 Jul 15 07:23 discourse-setup
drwxr-xr-x  8 root root  4096 Jul 15 07:23 image
-rwxr-xr-x  1 root root 22547 Jul 15 07:23 launcher
drwxr-xr-x  2 root root  4096 Jul 24 01:39 samples
drwxr-xr-x  2 root root  4096 Jul 15 07:23 scripts
drwxr-xr-x  2 root root  4096 Jul 15 07:23 shared
drwxr-xr-x  3 root root  4096 Jul 15 07:23 templates
drwxr-xr-x  2 root root  4096 Jul 15 07:23 tests
/opt/discourse# ls -la containers/
total 16
drwxr-xr-x  2 root root 4096 Jul 24 02:30 .
drwxr-xr-x 14 root root 4096 Jul 24 01:26 ..
-rw-r--r--  1 root root    0 Jul 15 07:23 .gitkeep
-rw-r--r--  1 root root 1258 Jul 24 02:08 data.yml
-rw-r--r--  1 root root 3542 Jul 24 02:30 web.yml
/opt/discourse# cd /data/discourse/
/data/discourse# ls -la
total 16
drwxr-xr-x 4 root root 4096 Jul 24 02:06 .
drwxr-xr-x 5 root root 4096 Jul 23 11:58 ..
drwxr-xr-x 6 root root 4096 Jul 24 02:09 data
drwxr-xr-x 7 root root 4096 Jul 24 02:34 web

حاول نسخ الأسطر التالية أسفل الأسطر التي تقول bundle install (حوالي السطر 160)

  - exec:
      cd: $home
      cmd:
        - su discourse -c 'gem update uri'

لقد حاولت إضافة ذلك إلى كتلة run، أسفل exec: echo \"Beginning of custom commands\"، وأعتقد أن ذلك كان متأخرًا جدًا.

لذلك أضفته إلى hooks: -> after_code:

حصلت على هذا:

I, [2022-07-24T12:13:24.641982 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'gem update uri'
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/local/lib/ruby/gems/2.7.0 directory.
I, [2022-07-24T12:13:29.392041 #1]  INFO -- : Updating installed gems
Updating uri

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'gem update uri' failed with return #<Process::Status: pid 132 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["su discourse -c 'gem update uri'"]}

لقد مضيت قدمًا وأزلت su discourse في حال كان ذلك سيساعد. يبدو أن ذلك قد تقدم بشكل جيد، وواجهت خطأ آخر:

I, [2022-07-24T12:21:17.497935 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
sh: 1: yarn: not found
I, [2022-07-24T12:21:19.397390 #1]  INFO -- :


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 5373 exit 127>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

اعتقدت أنه يجب علي تثبيت yarn يدويًا بعد ذلك؟ قمت بحذف جميع الإضافات، بما في ذلك docker_manager، على سبيل الاحتياط. لا يزال يطلب yarn، لذلك اعتقدت أنه من الأفضل تثبيته:

I, [2022-07-24T12:37:42.295754 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake plugin:pull_compatible_all'
WARNING: Plugins were activated before running `rake plugin:pull_compatible_all`
  You should prefix this command with LOAD_PLUGINS=0
I, [2022-07-24T12:37:44.807237 #1]  INFO -- :
I, [2022-07-24T12:37:44.807548 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
I, [2022-07-24T12:37:48.578845 #1]  INFO -- :
I, [2022-07-24T12:37:48.579098 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
error Command "ember" not found.
I, [2022-07-24T12:37:50.795001 #1]  INFO -- : yarn run v1.22.19
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 5409 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

لذلك بدأ يشتكي من ember. حتى لو حاولت تثبيته يدويًا.

هذا ما تبدو عليه after_code الخاصة بي حاليًا:

hooks:
  after_code:
    - exec:
        cd: $home
        cmd:
          - gem update uri
          - npm install -g yarn
          - npm install -g ember
        #- exec:
        # cd: $home/plugins
        #cmd:
            #- git clone https://github.com/discourse/docker_manager.git

لست متأكدًا من أن هذا هو المسار الصحيح

الخبر السار هو أن هذا الأمر يتم تنفيذه الآن على ما يبدو.

لاحظت أن LOAD_PLUGINS كان مفقودًا من قبل ولكني لم أذكره. هل قمت بإزالته؟ إنه موجود في القالب الأصلي. إذا قمت بتعديل القالب، فلن يضر أن نرى ما إذا كانت هناك أشياء أخرى قمت بتغييرها. أو ربما أنت على إصدار قديم. هل قمت بتشغيل git pull قبل إعادة بناء التطبيق؟

3 إعجابات

لم ألمس ذلك. لا يمكنني العثور عليه في ملفات العينات web_only.yml ولا في standalone.yml. لم أضفه، ولكن هذا مجرد تحذير على ما أعتقد؟

الخطأ الذي كنت أواجهه يتعلق بـ ember، وليس الإضافات.


بصراحة، قمت بتشغيل git pull عددًا لا يحصى من المرات، ولكنه كان مستقرًا جدًا ولم يتم سحب أي التزامات جديدة.

بينما كنت أحصل على الرابط الدقيق للالتزام، أدركت أن الأتمتة الخاصة بي كانت تستخرج فرع master، وأعتقد أن هذا لا يعطي أي تحذير أو أي شيء. بقدر ما قمت بسحب main، نجح ذلك. يبدو أنه تم تغييره العام الماضي.

إعجاب واحد (1)

أعلم ذلك، لكن عدم وجود LOAD_PLUGINS=0 كان علامة بالنسبة لي على أنك كنت تعمل ضد إصدار قديم من المستودع.

إعجاب واحد (1)

كان سيكون من الجيد وجود سطر سجل في بداية المشغل يشير إلى حقيقة أنني كنت أقوم بتشغيل الفرع القديم. كان سيوفر الكثير من الجهد.

لا أعرف ما إذا كانت التوقعات من المشغل هي أنه سيغير فرع git تلقائيًا، لكن هذا لم يحدث معي بالتأكيد.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.