Install Discourse for development using Docker

Es gibt derzeit keine Möglichkeit, Discourse auf einem Mac mit M1-Chip zu Docker zu betreiben, oder?

Wenn ich d/boot_dev --init ausführe, stoße ich auf diesen Fehler:

ActiveRecord::NoDatabaseError: Wir konnten Ihre Datenbank nicht finden: discourse_development. Verfügbare Datenbankkonfigurationen finden Sie in config/database.yml. (ActiveRecord::NoDatabaseError)

Ich bin mir nicht sicher, ob dies ein Fehler im boot_dev-Skript ist oder ob die Datenbank discourse_development woanders erstellt werden soll. In jedem Fall konnte ich das Problem mit dieser Änderung beheben:

diff --git a/bin/docker/boot_dev b/bin/docker/boot_dev
index 89fdcf6f65..0e9c5ce7d5 100755
--- a/bin/docker/boot_dev
+++ b/bin/docker/boot_dev
@@ -122,6 +122,7 @@ echo "pnpm install..."

 if [ "${initialize}" = "initialize" ]; then
     echo "Migrating database..."
+    "${SCRIPTPATH}/rake" db:create
     "${SCRIPTPATH}/rake" db:migrate
     RAILS_ENV=test "${SCRIPTPATH}/rake" db:migrate

Danach lief der Einrichtungsprozess ordnungsgemäß und folgte den Anweisungen im OP.

Ich bin mit dem Discourse-Code nicht vertraut genug, um zu wissen, ob dies die richtige Lösung ist, aber ich bin gerne bereit, einen PR einzureichen, wenn das hilfreich wäre. :slightly_smiling_face:

6 „Gefällt mir“

Ja, bitte erstellen Sie einen PR und verlinken Sie ihn hier. Danke!

4 „Gefällt mir“

Fertig!

3 „Gefällt mir“

Irgendwelche Fortschritte beim Ausführen?

Ich habe denselben Fehler erhalten. Ich habe docker rm -f /discourse_dev ausgeführt und d/boot_dev --init erneut ausgeführt, und es hat dieses Mal funktioniert.

Hinweis:
Mir ist gerade aufgefallen, dass der Ordner data/postgres anstelle von tmp/postgres heißt. Deshalb zielt der Befehl „Datenbank zurücksetzen“ auch darauf ab, den Ordner data zu löschen :slight_smile:

2 „Gefällt mir“

Ich dachte, ich schaue mir die Docker-Dev-Installation noch einmal an, bekomme aber immer wieder Folgendes:\n\n\nVerursacht durch:\nPG::ConnectionBad: Verbindung zum Server über Socket \"/var/run/postgresql/.s.PGSQL.5432\" fehlgeschlagen: Datei oder Verzeichnis nicht gefunden (PG::ConnectionBad)\n Läuft der Server lokal und akzeptiert er Verbindungen über diesen Socket?\n\n\nDoch ich kann bestätigen, dass der Dienst läuft (und funktioniert, wenn ich meine normale, nicht-Docker-basierte „manuelle“ Installation von Discourse verwende).\n\n\n~/discourse_docker/discourse$ sudo service postgresql status\n● postgresql.service - PostgreSQL RDBMS\n Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)\n Active: active (exited) since Mon 2025-03-10 17:26:13 GMT; 6min ago\n Process: 2052109 ExecStart=/bin/true (code=exited, status=0/SUCCESS)\n Main PID: 2052109 (code=exited, status=0/SUCCESS)\n\nMar 10 17:26:13 black-knight systemd[1]: Starting PostgreSQL RDBMS...\nMar 10 17:26:13 black-knight systemd[1]: Finished PostgreSQL RDBMS.\n\n\nHat Docker Dev spezifische und andere Postgres-Konnektivitätsanforderungen?

2 „Gefällt mir“

Ich fand die Standard-Log-Level von :debug viel zu ausführlich – die SQL-Abfragen ertränken wichtige Fehler. config/environments/development.rb erlaubt die Einstellung von DISCOURSE_DEV_LOG_LEVEL, aber ich weiß nicht, ob dies über das d/rails-Skript erfolgen kann?

Jedenfalls habe ich es nur vorübergehend in config/environments/development.rb auf config.log_level = :info fest codiert, und das hat das Problem für mich gelöst. Könnte auch anderen helfen.

1 „Gefällt mir“

Ich versuche, dies mit dem Data Explorer-Plugin zu starten, da ich die DE-Automatisierung untersuchen möchte.

Ich habe den Container gestartet.

Dann bin ich durch die „Installation“ des Plugins gestolpert, indem ich das Repository geklont und es in das Verzeichnis discourse/plugins verlinkt habe (sollte ich das tun? Der Leitfaden könnte an dieser Stelle wirklich klarer sein).

Ich habe das Plugin über die Benutzeroberfläche aktiviert. Aber wenn ich versuche, darauf zuzugreifen, erhalte ich einen Fehler.

Alles, was im Protokoll angezeigt wird, ist dies:

Processing by DiscourseDataExplorer::QueryController#index as JSON
Completed 500 Internal Server Error in 62ms (ActiveRecord: 9.8ms (5 queries, 0 cached) | GC: 2.9ms)

Was soll ich damit machen? Wo sind die Details?

1 „Gefällt mir“

Haben Sie die Migrationen ausgeführt?

Ich hatte kein sehr gutes Glück beim Symlinking meines Plugins-Ordners:

Ich habe daraufhin zu einem normalen Ordner gewechselt (siehe meinen letzten Kommentar in diesem Thread).

Ich glaube, es gibt derzeit einige Inkompatibilitäten mit Docker-Volumes, Dateibeobachtern und Symlinks.

2 „Gefällt mir“

Danke für die Antwort @Arkshine! Was hätte mich darauf aufmerksam machen sollen, dass dies getan werden muss? Ich habe mir das Tutorial zur Installation eines Plugins angesehen, aber ich schätze, das Plugin, das das Tutorial als Beispiel verwendet, benötigt keine Migrationen?

In der Zwischenzeit weiß ich nicht, ob mir das weiterhilft, da ich gerade auf die Notwendigkeit gestoßen bin, das Proxy-Zertifikat meines Unternehmens in den Docker-Container zu bekommen, und ich mich bisher nicht viel mit Docker beschäftigt habe :frowning:

Welches Problem lösen Sie? Eine Entwicklunginstallation ist im Allgemeinen nur für den localhost (d. h. Ihren Computer) zugänglich, auf dem die Installation ausgeführt wird.

Oder versuchen Sie vielleicht, etwas zu debuggen, das ein Zertifikat wie ein Authentifizierungssystem benötigt?

Als ich gestern versucht habe, mein Image wieder zu starten, wollte es Gems herunterladen?

Installing gems...
Fetching source index from https://rubygems.org/

Retrying fetcher due to error (2/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have the CA certificates needed for verification. For information about OpenSSL certificates, see https://railsapps.github.io/openssl-certificate-verify-failed.html.

Retrying fetcher due to error (3/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have the CA certificates needed for verification. For information about OpenSSL certificates, see https://railsapps.github.io/openssl-certificate-verify-failed.html.

Retrying fetcher due to error (4/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have the CA certificates needed for verification. For information about OpenSSL certificates, see https://railsapps.github.io/openssl-certificate-verify-failed.html.

Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn't have
the CA certificates needed for verification. For information about OpenSSL certificates, see
https://railsapps.github.io/openssl-certificate-verify-failed.html.

Hey, was passiert, wenn man das Passwort für das Administratorkonto vergisst? Muss man die gesamte Entwicklung neu installieren?

Es können keine E-Mails gesendet werden, daher sind Zurücksetzungen nicht möglich.

Sie können die Konsole verwenden, um ein neues Passwort festzulegen oder ein neues Administratorkonto zu erstellen.

1 „Gefällt mir“

Es gibt eine Route, um jeder Benutzer zu werden.

  http://localhost:4200/session/any-username/become 
4 „Gefällt mir“