Tuttavia, sto riscontrando problemi nella creazione di un backup dalla sezione di amministrazione.
L’errore che ricevo è: pg_dump: error: connection to database "discourse development" failed: FATAL: Peer authentication failed for user "postgres".
Ho controllato il file pg_hba.conf e ho impostato tutte le opzioni su trust.
Sarebbe ottimo ricevere assistenza su come risolvere questo problema.
Ho provato sia su Ubuntu che su MacOSX. Tutto funziona correttamente su entrambi (creazione di post, API, ecc.) tranne la funzionalità di backup.
LOAD_PLUGINS e RAILS_ENV devono precedere il comando per assegnare le variabili d’ambiente. Dopo il comando, vengono trattati come argomenti per rspec, che non li riconosce.
Scusa, ho interpretato male i tuoi due comandi come “il primo funziona per questa specifica, il secondo non funziona per questa specifica”. Non ho un ambiente di sviluppo configurato per testare.
Dall’esame del file rspec su GitHub, penso che tu abbia ragione: le variabili d’ambiente non vengono passate. Sembra che tu possa eseguire d/shell per ottenere una shell all’interno del contenitore e poi eseguire lì il tuo comando rspec.
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "LOAD_PLUGINS=1": executable file not found in $PATH: unknown
Sto riscontrando esattamente lo stesso problema di Max. Ogni volta che provo a eseguire un backup o un ripristino sulla mia installazione locale di sviluppo Docker, ottengo lo stesso errore: Peer authentication failed for user "postgres"
Dopo aver indagato un po’, ho scoperto che nell’ambiente di sviluppo la configurazione del database appare così:
In qualche modo, l’ambiente di sviluppo non imposta il nome utente nelle variabili d’ambiente e il modulo BackupRestore imposta automaticamente il valore del nome utente su postgres.
Sto cercando di testare un plugin utilizzando l’ambiente Docker. In modo casuale l’applicazione smette di caricarsi e mi viene mostrata una pagina vuota finché non elimino la cartella dei dati e ricostruisco tutto. Hai qualche consiglio su come risolvere il problema?
Sono passato dal mio Mac locale a una VM Ubuntu sperando che questo rendesse più semplice far funzionare tutto, ma purtroppo finora non è stato così.
Sto già affrontando alcuni strani problemi di permessi nelle fasi iniziali. d/bundle install segnala la necessità di privilegi sudo per installare alcuni componenti, e anche d/rails s restituisce errori relativi ai permessi.
Traceback (most recent call last):
8: from /src/bin/unicorn:70:in `<main>'
7: from /src/bin/unicorn:38:in `ensure_cache_clean!'
6: from /usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `mkdir_p'
5: from /usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `each'
4: from /usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `block in mkdir_p'
3: from /usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `reverse_each'
2: from /usr/local/lib/ruby/2.7.0/fileutils.rb:228:in `block (2 levels) in mkdir_p'
1: from /usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `fu_mkdir'
/usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `mkdir': Permission denied @ dir_s_mkdir - /src/tmp (Errno::EACCES)
Hai idea di cosa stia andando storto? Questa macchina aveva in precedenza eseguito una produzione di Discourse senza problemi. Ho semplicemente fermato e rimosso quei container e clonato il repo git di sviluppo in una directory diversa. Sto eseguendo tutto tramite tmux per gestire le diverse istanze della shell.
l’unica soluzione è passare a immagini multi-architettura compatibili con arm64. Queste saranno anche molto più veloci e generalmente più affidabili. Consiglio di verificare quali immagini base state utilizzando e di passare a quelle multi-architettura dove possibile. Potete vedere quali architetture sono supportate da ciascuna immagine su Docker Hub: […]
Il team di Discourse è aperto a supportare un’immagine multi-architettura? Sembra che l’immagine base di Discourse sia basata su debian:buster-slim, che è multi-architettura, quindi non dovrebbe essere eccessivamente difficile rendere l’immagine base di Discourse multi-architettura, ma ciò potrebbe mettervi nella posizione di dover supportare ARM (in produzione!). Qualcuno (il team di Discourse?) dovrebbe eseguire i test di Discourse sia su x86_64 che su ARM, risolvere i problemi quando falliscono, ecc.
Una PR sarebbe anche benvenuta qui?
(A mio avviso, sembra che ARM sia l’architettura del futuro, anche negli ambienti ospitati nel cloud.)
Impossibile farlo funzionare su openSUSE Leap 15. Suppongo che non sia un sistema operativo supportato, anche se dato che usiamo Docker non dovrebbe fare molta differenza…
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ dir_s_mkdir - /src/app/assets/javascripts/plugins
/src/lib/plugin/instance.rb:441:in `ensure_directory'
/src/lib/plugin/instance.rb:713:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
Ho provato a creare manualmente “app/assets/javascripts/plugins” e questo mi ha portato a:
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ dir_s_mkdir - /src/tmp
lib/discourse.rb:94:in `atomic_write_file'
/src/lib/plugin/instance.rb:726:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
Quindi farò mkdir tmp nella cartella sorgente…
Ma poi arrivo qui:
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ rb_sysopen - /src/tmp/5ad4443faf817dc922116f8df65ae5c3
lib/discourse.rb:97:in `initialize'
lib/discourse.rb:97:in `open'
lib/discourse.rb:97:in `atomic_write_file'
/src/lib/plugin/instance.rb:726:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
Sembra che boot_dev stia eseguendo docker exec come utente discourse… ma le directory sono di proprietà di un utente 1016 (l’uid dell’utente host).
Immagino che molti sviluppatori non incontrino questo problema sui loro laptop personali dove il loro utente ha un uid di 1000 e coincide casualmente…