Il rebuild del Launcher fallisce a 'bundle exec rake themes:update assets:precompile'

Sto cercando di costruire una nuova immagine Docker per Discourse, ma sembra che fallisca nella fase di migrazione.

    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'

    Pulizia dei file temporanei

    Bundling degli asset

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

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

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

    35:M 15 Dec 2020 15:06:27.009 * 10 modifiche in 300 secondi. Salvataggio in corso...

    35:M 15 Dec 2020 15:06:27.010 * Salvataggio in background avviato dal processo 1066

    1066:C 15 Dec 2020 15:06:27.010 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:27.110 # Errore nel salvataggio in background

    35:M 15 Dec 2020 15:06:33.020 * 10 modifiche in 300 secondi. Salvataggio in corso...

    35:M 15 Dec 2020 15:06:33.020 * Salvataggio in background avviato dal processo 1067

    1067:C 15 Dec 2020 15:06:33.020 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:33.121 # Errore nel salvataggio in background

    35:M 15 Dec 2020 15:06:39.030 * 10 modifiche in 300 secondi. Salvataggio in corso...

    35:M 15 Dec 2020 15:06:39.031 * Salvataggio in background avviato dal processo 1068

    1068:C 15 Dec 2020 15:06:39.031 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:39.131 # Errore nel salvataggio in background

    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 modifiche in 300 secondi. Salvataggio in corso...

    35:M 15 Dec 2020 15:06:45.042 * Salvataggio in background avviato dal processo 1072

    1072:C 15 Dec 2020 15:06:45.042 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:45.142 # Errore nel salvataggio in background

    Compressione completata per application-42d4413fabab7a4b12e0c25fb01f736af560aa283089071a8493f37c9b042a4a.js : 25,87 secondi

    Compressione completata per tutti i file JS : 83,62 secondi

    Inizio compilazione CSS: 2020-12-15 15:06:49 UTC

    Compilazione CSS per default 2020-12-15 15:06:49 UTC

    Target di precompilazione: desktop Dark

    35:M 15 Dec 2020 15:06:51.051 * 10 modifiche in 300 secondi. Salvataggio in corso...

    35:M 15 Dec 2020 15:06:51.051 * Salvataggio in background avviato dal processo 1074

    1074:C 15 Dec 2020 15:06:51.051 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:51.151 # Errore nel salvataggio in background

    rake aborted!

    Redis::CommandError: ERR Errore durante l'esecuzione dello script (chiamata a f_45fe64238f6598e6c505af0aad74b4e178e891f4): @user_script:14: @user_script: 14: -MISCONF Redis è configurato per salvare snapshot RDB, ma al momento non riesce a persistere su disco. I comandi che potrebbero modificare il set di dati sono disabilitati, poiché questa istanza è configurata per segnalare errori durante le scritture se il salvataggio degli snapshot RDB fallisce (opzione stop-writes-on-bgsave-error). Controlla i log di Redis per i dettagli sull'errore RDB.

    /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>'

    Tasks: TOP => assets:precompile:css

    (Vedi la traccia completa eseguendo il task con --trace)

    I, [2020-12-15T15:06:53.012968 #1] INFO -- : Download di MaxMindDB in corso...

    Compressione di Javascript e generazione delle source map

    I, [2020-12-15T15:06:53.013385 #1] INFO -- : Terminazione dei processi asincroni

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

    35:signal-handler (1608044813) Ricevuto SIGTERM, programmazione dello shutdown in corso...

    35:M 15 Dec 2020 15:06:53.054 # Shutdown richiesto dall'utente...

    35:M 15 Dec 2020 15:06:53.054 * Salvataggio dell'ultimo snapshot RDB prima dell'uscita.

    35:M 15 Dec 2020 15:06:53.054 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:53.054 # Errore durante il salvataggio del DB, impossibile uscire.

    35:M 15 Dec 2020 15:06:53.054 # SIGTERM ricevuto ma errori durante la chiusura del server, controlla i log per ulteriori informazioni

    35:M 15 Dec 2020 15:06:57.060 * 10 modifiche in 300 secondi. Salvataggio in corso...

    35:M 15 Dec 2020 15:06:57.060 * Salvataggio in background avviato dal processo 1078

    1078:C 15 Dec 2020 15:06:57.061 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:57.161 # Errore nel salvataggio in background

    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 non è terminato correttamente, forzatura della terminazione!

    FALLITO

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

    Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' fallito con codice di ritorno #<Process::Status: pid 372 exit 1>

    Posizione del fallimento: /pups/lib/pups/exec_command.rb:112:in `spawn'

    exec fallito con i parametri {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

    be9c92f00a4814e5e9ebcdb06f25232b03f7522390b97c157085c2f7ef7f3387

    ** BOOTSTRAP FALLITO ** scorri verso l'alto e cerca messaggi di errore precedenti, potrebbero essercene piĂą di uno.

    In breve, sto riscontrando questo errore:

    68:C 15 Dec 2020 15:06:39.031 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:39.131 # Errore nel salvataggio in background

    35:M 15 Dec 2020 15:06:51.051 * Salvataggio in background avviato dal processo 1074

    1074:C 15 Dec 2020 15:06:51.051 # Impossibile aprire il file RDB dump.rdb (nella directory radice del server /pups) per il salvataggio: Permesso negato

    35:M 15 Dec 2020 15:06:51.151 # Errore nel salvataggio in background

    rake aborted!

    Redis::CommandError: ERR Errore durante l'esecuzione dello script (chiamata a f_45fe64238f6598e6c505af0aad74b4e178e891f4): @user_script:14: @user_script: 14: -MISCONF Redis è configurato per salvare snapshot RDB, ma al momento non riesce a persistere su disco. I comandi che potrebbero modificare il set di dati sono disabilitati, poiché questa istanza è configurata per segnalare errori durante le scritture se il salvataggio degli snapshot RDB fallisce (opzione stop-writes-on-bgsave-error). Controlla i log di Redis per i dettagli sull'errore RDB.

Il mio file app.yaml appare così:

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

Ho nascosto password, hostname ed email per motivi di sicurezza. Per Redis sto eseguendo un container Docker separato. Riesco a connettermi ad esso su localhost e sulla porta specificata.

Fatemmi sapere se sto dimenticando qualcosa.

Se stai eseguendo in un container separato, dovresti rimuovere la riga

- "templates/redis.template.yml"

dal tuo app.yml.

Il tuo Redis esterno è mal configurato o sotto forte pressione di attesa I/O e sta causando questo problema. Dovrai risolvere tale problema.

@Falco Anche quando uso il Redis predefinito rimuovendo host e porta del Redis dal file, ricevo lo stesso errore

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

35:M 15 dic 2020 16:43:25.078 * 10 modifiche in 300 secondi. Salvataggio in corso...

35:M 15 dic 2020 16:43:25.079 * Salvataggio in background avviato dal processo 1064

1064:C 15 dic 2020 16:43:25.079 # Impossibile aprire il file RDB dump.rdb (nella directory root del server /pups) per il salvataggio: Permesso negato

35:M 15 dic 2020 16:43:25.179 # Errore durante il salvataggio in background

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' fallito con codice di ritorno #<Process::Status: pid 371 exit 1>

Posizione dell'errore: /pups/lib/pups/exec_command.rb:112:in `spawn'

Esecuzione fallita con i parametri {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

d514879d2a044425c1e7d833dafb8196ae0a3026aa75119512349188531b2a5d

Hai compromesso i permessi dei file. Redis non riesce ad aprire il proprio file di dump.

@Falco ma questo accade all’interno del Docker di Discourse mentre viene costruita l’immagine. Come posso modificarlo?

Hai ripristinato il template di Redis nell’app.yml?

Quel file si trova in /var/discourse/shared/standalone/redis_data/dump.rdb con permessi 644 ed è di proprietà dell’UID 106 e del GID 110.

Sembra che tu abbia modificato manualmente i permessi di questo file e potenzialmente di altri.

Non ho ancora nemmeno creato l’immagine, quindi non capisco ancora come possa essere modificata. Ho aggiunto redis.template.yml al mio file.

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

Tuttavia, sto eseguendo ./launcher rebuild come utente root. Questo avrà qualche effetto su ciò?

Ora dovrai correggere manualmente i permessi del file interessato.

Problema risolto dopo la compilazione utilizzando container separati per postgres e redis e rimuovendo la riga "templates/redis.template.yml" da app.yml