Allerdings habe ich Probleme beim Erstellen eines Backups aus dem Admin-Bereich.
Die Fehlermeldung lautet: pg_dump: error: connection to database "discourse development" failed: FATAL: Peer authentication failed for user "postgres".
Ich habe die pg_hba.conf-Datei überprüft und alle Optionen auf „trust“ gesetzt.
Es wäre toll, wenn ich Unterstützung dabei bekommen könnte, das zum Laufen zu bringen.
Ich habe es sowohl unter Ubuntu als auch unter macOS ausprobiert. Alles funktioniert einwandfrei (Erstellen von Beiträgen, API usw.), außer die Backup-Funktionalität.
LOAD_PLUGINS und RAILS_ENV müssen vor dem Befehl stehen, um Umgebungsvariablen zu setzen. Nach dem Befehl werden sie als Argumente an rspec übergeben, das diese nicht versteht.
Entschuldigung, ich habe deine beiden Befehle missverstanden als „der erste funktioniert für diese andere Spezifikation, der zweite funktioniert nicht für diese Spezifikation". Ich habe keine Entwicklungsumgebung eingerichtet, um es zu testen.
Wenn ich mir die RSpec-Datei auf GitHub ansehe, hast du recht, dass die Umgebungsvariablen nicht übergeben werden. Es sieht so aus, als könntest du d/shell ausführen, um eine Shell innerhalb des Containers zu erhalten, und dort dann deinen RSpec-Befehl ausführen.
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
Ich habe exakt das gleiche Problem wie Max. Immer wenn ich versuche, auf meiner lokalen Docker-Entwicklungsumgebung ein Backup zu erstellen oder eine Wiederherstellung durchzuführen, erhalte ich denselben Fehler: Peer authentication failed for user "postgres".
Nach etwas Recherche habe ich festgestellt, dass in der Entwicklungsumgebung die Datenbankkonfiguration so aussieht:
Offensichtlich werden in der Entwicklungsumgebung die Benutzernamen nicht in den Umgebungsvariablen gesetzt, und das Modul BackupRestore setzt den Benutzernamen dann standardmäßig auf postgres.
Wir haben das Gem erfolgreich installiert: d/exec sudo gem install discourse_theme … nun besteht die Herausforderung darin, eine Symlink-Verbindung zum lokalen Theme herzustellen …
@Simon_Manning Hinweis zur Verwendung von sudo, um Berechtigungsprobleme zu umgehen (danke für die Erinnerung an @fzngagan).
Ich versuche, ein Plugin mit dem Docker-Setup zu testen. Zufällig lädt die App nicht mehr und ich sehe nur eine leere Seite, bis ich den Datenordner lösche und alles neu aufbaue. Hast du Tipps, wie man das Problem debuggen kann?
Ich bin von meinem lokalen Mac auf eine Ubuntu-VM umgestiegen, in der Hoffnung, dass das den Start erleichtert. Leider ist das bisher nicht der Fall.
Bereits in den frühen Phasen kämpfe ich mit seltsamen Berechtigungsproblemen. d/bundle install meldet, dass es sudo-Rechte benötigt, um einige Pakete zu installieren, und auch d/rails s wirft Berechtigungsfehler.
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)
Habt ihr eine Idee, was schiefläuft? Auf dieser Maschine lief zuvor ein produktives Discourse ohne Probleme. Ich habe diese Container gestoppt und entfernt und das Dev-Git-Repository in ein anderes Verzeichnis geklont. Ich führe alles über tmux aus, um die verschiedenen Shell-Instanzen zu verwalten.
Die einzige Lösung besteht darin, auf arm64-fähige Multi-Arch-Images umzusteigen. Diese werden auch deutlich schneller und generell zuverlässiger sein. Ich empfehle zu prüfen, welche Basis-Images ihr verwendet, und wo möglich auf Multi-Arch-Images umzusteigen. Auf Docker Hub lässt sich ablesen, welche Architekturen von jedem Image unterstützt werden: […]
Ist das Discourse-Team offen für die Unterstützung eines Multi-Arch-Images? Es sieht so aus, als ob das Discourse-Basisimage auf debian:buster-slim basiert, das bereits Multi-Arch-fähig ist. Daher sollte es nicht übermäßig schwierig sein, das Discourse-Basisimage ebenfalls multi-arch-fähig zu machen. Das könnte euch jedoch in die Lage versetzen, ARM (in der Produktion!) unterstützen zu müssen. Jemand (das Discourse-Team?) müsste die Discourse-Tests sowohl auf x86_64 als auch auf ARM ausführen, Fehler beheben, wenn sie scheitern, usw.
Wäre ein PR hier überhaupt willkommen?
(IMO scheint ARM die Architektur der Zukunft zu sein, selbst in cloud-gewirteten Umgebungen.)
Ich bekomme das unter openSUSE Leap 15 nicht zum Laufen. Ich nehme an, das ist kein unterstütztes Betriebssystem, obwohl es, da wir Docker verwenden, eigentlich keine Rolle spielen sollte…
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)
Ich habe versucht, “app/assets/javascripts/plugins” manuell zu erstellen, und das hat mich zu Folgendem geführt:
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)
Ich werde also tmp im Quellordner erstellen…
Aber dann komme ich hierher:
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)
Es sieht so aus, als ob boot_dev docker exec als discourse-Benutzer ausführt… aber die Verzeichnisse gehören einem Benutzer 1016 (der uid meines Host-Benutzers).
Ich stelle mir vor, dass viele Entwickler dieses Problem auf ihren persönlichen Laptops nicht haben, wo ihr Benutzer eine uid von 1000 hat und es zufällig übereinstimmt…