Launcher Rebuild schlägt fehl bei "'bundle exec rake themes:update assets:precompile' "

Ich versuche, ein neues Discourse-Docker-Image zu erstellen, aber es scheint, als würde es in der Migrationsphase fehlschlagen.

    I, [2020-12-15T15:02:28.688540 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'

    I, [2020-12-15T15:04:19.530701 #1] INFO -- :

    I, [2020-12-15T15:04:19.530966 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'

    Temporäre Dateien werden bereinigt

    Assets werden gebündelt

    I, [2020-12-15T15:04:36.448680 #374] INFO -- : Schreiben von /var/www/discourse/public/assets/vendor-bdb3fefe8aefde7bf6aef331a6edd24482502b370ed9f6f299836c72ee6a843c.js

    I, [2020-12-15T15:04:43.818563 #374] INFO -- : Schreiben von /var/www/discourse/public/assets/admin-073db5e5695d9f3834b9ad41d66ef30a02b9ca85fc9c95f272257ea9c7a67f21.js

    I, [2020-12-15T15:04:43.822864 #374] INFO -- : Schreiben von /var/www/discourse/public/assets/browser-detect-115ab5953de1b5bb122bfb26b757f5391dd8d1d2aef2b81baf7b59aee99d9f34.js
.
.
.
.
.
.
.
.
.
.
.

    35:M 15 Dec 2020 15:06:27.009 * 10 Änderungen in 300 Sekunden. Speichern...

    35:M 15 Dec 2020 15:06:27.010 * Hintergrundspeicherung gestartet durch PID 1066

    1066:C 15 Dec 2020 15:06:27.010 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:27.110 # Fehler bei der Hintergrundspeicherung

    35:M 15 Dec 2020 15:06:33.020 * 10 Änderungen in 300 Sekunden. Speichern...

    35:M 15 Dec 2020 15:06:33.020 * Hintergrundspeicherung gestartet durch PID 1067

    1067:C 15 Dec 2020 15:06:33.020 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:33.121 # Fehler bei der Hintergrundspeicherung

    35:M 15 Dec 2020 15:06:39.030 * 10 Änderungen in 300 Sekunden. Speichern...

    35:M 15 Dec 2020 15:06:39.031 * Hintergrundspeicherung gestartet durch PID 1068

    1068:C 15 Dec 2020 15:06:39.031 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:39.131 # Fehler bei der Hintergrundspeicherung

    gzip -f -c -9 /var/www/discourse/public/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js > /var/www/discourse/public/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js.gz

    brotli -f --quality=11 /var/www/discourse/public/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js --output=/var/www/discourse/public/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js.br

    35:M 15 Dec 2020 15:06:45.041 * 10 Änderungen in 300 Sekunden. Speichern...

    35:M 15 Dec 2020 15:06:45.042 * Hintergrundspeicherung gestartet durch PID 1072

    1072:C 15 Dec 2020 15:06:45.042 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:45.142 # Fehler bei der Hintergrundspeicherung

    Komprimierung von application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js abgeschlossen: 25,87 Sek.

    Komprimierung aller JS-Dateien abgeschlossen: 83,62 Sek.

    Start der CSS-Kompilierung: 2020-12-15 15:06:49 UTC

    Kompilierung von CSS für Standard 2020-12-15 15:06:49 UTC

    Precompile-Ziel: Desktop Dunkel

    35:M 15 Dec 2020 15:06:51.051 * 10 Änderungen in 300 Sekunden. Speichern...

    35:M 15 Dec 2020 15:06:51.051 * Hintergrundspeicherung gestartet durch PID 1074

    1074:C 15 Dec 2020 15:06:51.051 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:51.151 # Fehler bei der Hintergrundspeicherung

    rake abgebrochen!

    Redis::CommandError: ERR Fehler beim Ausführen des Skripts (Aufruf von f_45fe64238f6598e6c505af0aad74b4e178e891f4): @user_script:14: @user_script: 14: -MISCONF Redis ist so konfiguriert, dass RDB-Snapshots gespeichert werden, kann aber derzeit keine Daten auf der Festplatte persistent machen. Befehle, die den Datensatz ändern könnten, sind deaktiviert, da diese Instanz so konfiguriert ist, dass Fehler beim Schreiben gemeldet werden, wenn das Erstellen von RDB-Snapshots fehlschlägt (Option stop-writes-on-bgsave-error). Bitte überprüfen Sie die Redis-Protokolle auf Details zum RDB-Fehler.

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis/client.rb:132:in `call'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.2.0/lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:2585:in `block in _eval'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:69:in `block in synchronize'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:69:in `synchronize'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:2584:in `_eval'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis.rb:2636:in `evalsha'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/backends/redis.rb:425:in `cached_eval'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/backends/redis.rb:144:in `publish'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus.rb:382:in `publish'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/distributed_cache.rb:80:in `publish'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/distributed_cache.rb:90:in `set'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/message_bus-3.3.4/lib/message_bus/distributed_cache.rb:135:in `[]='

    /var/www/discourse/app/models/theme.rb:142:in `get_set_cache'

    /var/www/discourse/app/models/theme.rb:158:in `components_for'

    /var/www/discourse/app/models/theme.rb:185:in `block in transform_ids'

    /var/www/discourse/app/models/theme.rb:142:in `get_set_cache'

    /var/www/discourse/app/models/theme.rb:177:in `transform_ids'

    /var/www/discourse/app/models/theme.rb:371:in `list_baked_fields'

    /var/www/discourse/app/models/theme.rb:367:in `resolve_baked_field'

    /var/www/discourse/lib/stylesheet/manager.rb:423:in `color_scheme_digest'

    /var/www/discourse/lib/stylesheet/manager.rb:361:in `digest'

    /var/www/discourse/lib/stylesheet/manager.rb:339:in `stylesheet_filename'

    /var/www/discourse/lib/stylesheet/manager.rb:300:in `source_map_filename'

    /var/www/discourse/lib/stylesheet/manager.rb:251:in `compile'

    /var/www/discourse/lib/stylesheet/manager.rb:169:in `block (2 levels) in precompile_css'

    /var/www/discourse/lib/stylesheet/manager.rb:162:in `each'

    /var/www/discourse/lib/stylesheet/manager.rb:162:in `block in precompile_css'

    /var/www/discourse/lib/stylesheet/manager.rb:161:in `each'

    /var/www/discourse/lib/stylesheet/manager.rb:161:in `precompile_css'

    /var/www/discourse/lib/tasks/assets.rake:54:in `block (2 levels) in <main>'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:76:in `with_connection'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-2.5.0/lib/rails_multisite/connection_management.rb:86:in `each_connection'

    /var/www/discourse/lib/tasks/assets.rake:47:in `block in <main>'

    /var/www/discourse/lib/tasks/assets.rake:331:in `block in <main>'

    /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'

    /usr/local/bin/bundle:23:in `load'

    /usr/local/bin/bundle:23:in `<main>'

    Aufgaben: TOP => assets:precompile:css

    (Siehe vollständigen Aufruf, indem Sie die Aufgabe mit --trace ausführen)

    I, [2020-12-15T15:06:53.012968 #1] INFO -- : Herunterladen von MaxMindDB...

    Komprimierung von JavaScript und Erstellen von Source Maps

    I, [2020-12-15T15:06:53.013385 #1] INFO -- : Beenden asynchroner Prozesse

    I, [2020-12-15T15:06:53.013424 #1] INFO -- : Senden von TERM an exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 35

    35:signal-handler (1608044813) SIGTERM empfangen, Herunterfahren geplant...

    35:M 15 Dec 2020 15:06:53.054 # Benutzer angefordertes Herunterfahren...

    35:M 15 Dec 2020 15:06:53.054 * Speichern des finalen RDB-Snapshots vor dem Beenden.

    35:M 15 Dec 2020 15:06:53.054 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:53.054 # Fehler beim Versuch, die Datenbank zu speichern, kann nicht beenden.

    35:M 15 Dec 2020 15:06:53.054 # SIGTERM empfangen, aber Fehler beim Versuch, den Server herunterzufahren, überprüfen Sie die Protokolle für weitere Informationen

    35:M 15 Dec 2020 15:06:57.060 * 10 Änderungen in 300 Sekunden. Speichern...

    35:M 15 Dec 2020 15:06:57.060 * Hintergrundspeicherung gestartet durch PID 1078

    1078:C 15 Dec 2020 15:06:57.061 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:57.161 # Fehler bei der Hintergrundspeicherung

    I, [2020-12-15T15:07:03.014092 #1] INFO -- : exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid:35 wurde nicht ordnungsgemäß beendet, erzwungenes Beenden!

    FEHLGESCHLAGEN

    --------------------

    Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' fehlgeschlagen mit Rückgabewert #<Process::Status: pid 372 exit 1>

    Ort des Fehlers: /pups/lib/pups/exec_command.rb:112:in `spawn'

    exec fehlgeschlagen mit den Parametern {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

    be9c92f00a4814e5e9ebcdb06f25232b03f7522390b97c157085c2f7ef7f3387

    ** BOOTSTRAP FEHLGESCHLAGEN ** Bitte scrollen Sie nach oben und suchen Sie nach früheren Fehlermeldungen; es kann mehr als eine geben.

    Kurz gesagt, ich sehe diesen Fehler:

    68:C 15 Dec 2020 15:06:39.031 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:39.131 # Fehler bei der Hintergrundspeicherung

    35:M 15 Dec 2020 15:06:51.051 * Hintergrundspeicherung gestartet durch PID 1074

    1074:C 15 Dec 2020 15:06:51.051 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Wurzelverzeichnis /pups) zum Speichern: Zugriff verweigert

    35:M 15 Dec 2020 15:06:51.151 # Fehler bei der Hintergrundspeicherung

    rake abgebrochen!

    Redis::CommandError: ERR Fehler beim Ausführen des Skripts (Aufruf von f_45fe64238f6598e6c505af0aad74b4e178e891f4): @user_script:14: @user_script: 14: -MISCONF Redis ist so konfiguriert, dass RDB-Snapshots gespeichert werden, kann aber derzeit keine Daten auf der Festplatte persistent machen. Befehle, die den Datensatz ändern könnten, sind deaktiviert, da diese Instanz so konfiguriert ist, dass Fehler beim Schreiben gemeldet werden, wenn das Erstellen von RDB-Snapshots fehlschlägt (Option stop-writes-on-bgsave-error). Bitte überprüfen Sie die Redis-Protokolle auf Details zum RDB-Fehler.

Meine app.yaml-Datei sieht wie folgt aus:

templates:
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/redis.template.yml"
env:
  LANG: en_US.UTF-8
  UNICORN_WORKERS: 8
  DISCOURSE_DB_USERNAME: discourse
  DISCOURSE_DB_PASSWORD: "xxxxx"
  DISCOURSE_DB_HOST: "xxxxx"
  DISCOURSE_REDIS_HOST: 127.0.0.1
  DISCOURSE_REDIS_PORT: "6379"
  DISCOURSE_DB_NAME:  discourse_prod_2
  DISCOURSE_DEVELOPER_EMAILS: 'xxxxxxx'
  DISCOURSE_HOSTNAME: 'localhost'
  DISCOURSE_DB_PORT: "5301"  
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - mkdir -p plugins
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-slack-official.git
          - git clone https://github.com/discourse/discourse-assign.git
run:
  - exec:
      cd: /var/www/discourse
      cmd:
        - sed -i 's/GlobalSetting.serve_static_assets/true/' config/environments/production.rb

Ich habe Passwort, Hostname und E-Mail aus Sicherheitsgründen ausgeblendet. Für Redis verwende ich einen separaten Docker-Container. Ich kann mich auf localhost und dem angegebenen Port damit verbinden.

Bitte lassen Sie mich wissen, ob ich etwas übersehe.

Wenn du in einem separaten Container läufst, solltest du die Zeile

- "templates/redis.template.yml"

aus deiner app.yml entfernen.

Dein externer Redis ist entweder falsch konfiguriert oder steht unter starkem I/O-Wartungsdruck, was dieses Problem verursacht. Du musst das beheben.

@Falco Selbst wenn ich den Standard-Redis verwende, indem ich den Redis-Host und -Port aus der Datei entferne, erhalte ich denselben Fehler:

sets',url='/assets/application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js.map'"

35:M 15 Dez 2020 16:43:25.078 * 10 Änderungen in 300 Sekunden. Speichern...

35:M 15 Dez 2020 16:43:25.079 * Hintergrund-Speicherung gestartet durch PID 1064

1064:C 15 Dez 2020 16:43:25.079 # Fehler beim Öffnen der RDB-Datei dump.rdb (im Server-Stammverzeichnis /pups) zum Speichern: Zugriffsverweigert

35:M 15 Dez 2020 16:43:25.179 # Fehler bei der Hintergrund-Speicherung

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' fehlgeschlagen mit Rückgabewert #<Process::Status: pid 371 exit 1>

Ort des Fehlers: /pups/lib/pups/exec_command.rb:112:in `spawn'

Ausführung fehlgeschlagen mit den Parametern {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

d514879d2a044425c1e7d833dafb8196ae0a3026aa75119512349188531b2a5d

Die Dateiberechtigungen sind falsch gesetzt. Redis kann seine eigene Dump-Datei nicht öffnen.

@Falco, aber das passiert im Discourse-Docker während des Build-Vorgangs des Images. Wie kann ich das ändern?

Hast du die Redis-Vorlage wieder in die app.yml hinzugefügt?

Die Datei befindet sich unter /var/discourse/shared/standalone/redis_data/dump.rdb mit Zugriffsrechten 644 und gehört der UID 106 / GID 110.

Es scheint, als hättest du manuell die Berechtigungen für diese Datei und möglicherweise andere geändert.

Ich habe das Image noch nicht einmal erstellt, also verstehe ich immer noch nicht, wie es geändert werden kann. Ich habe die redis.template.yml zu meiner Datei hinzugefügt.

templates:
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/redis.template.yml"
env:
  LANG: en_US.UTF-8
  UNICORN_WORKERS: 8
  DISCOURSE_DB_USERNAME: discourse
  DISCOURSE_DB_PASSWORD: "xxxxx"
  DISCOURSE_DB_HOST: "xxxxx"
  DISCOURSE_DB_NAME:  discourse_prod_2
  DISCOURSE_DEVELOPER_EMAILS: 'xxxxxxx'
  DISCOURSE_HOSTNAME: 'localhost'
  DISCOURSE_DB_PORT: "5301"  
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - mkdir -p plugins
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-slack-official.git
          - git clone https://github.com/discourse/discourse-assign.git
run:
  - exec:
      cd: /var/www/discourse
      cmd:
        - sed -i 's/GlobalSetting.serve_static_assets/true/' config/environments/production.rb

Allerdings führe ich ./launcher rebuild als Root-Benutzer aus. Wird das hier einen Einfluss haben?

Sie müssen nun die Berechtigungen der betroffenen Datei manuell korrigieren.

Problem behoben, nachdem PostgreSQL und Redis in separaten Containern gebaut und die Zeile "templates/redis.template.yml" aus der app.yml entfernt wurden.