Developing Discourse using a Dev Container

Wenn Sie OrbStack (nicht verbunden) in Ihrer lokalen macOS-Umgebung verwenden und Discourse über HTTPS mit einer benutzerdefinierten Domain ausführen möchten, aktualisieren Sie Ihre devcontainer.json mit den folgenden Ergänzungen:

  1. Geben Sie dem Container einen Namen.
  2. Fügen Sie die Wildcard-Domain .orb.local zur Umgebungsvariablen RAILS_DEVELOPMENT_HOSTS hinzu (Hostnamen müssen durch ein Komma getrennt sein).
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -13,10 +13,11 @@
   ],
   "remoteUser": "discourse",
   "remoteEnv": {
-    "RAILS_DEVELOPMENT_HOSTS": ".app.github.dev",
+    "RAILS_DEVELOPMENT_HOSTS": ".app.github.dev,.orb.local", // Schritt 2
     "PGUSER": "discourse",
     "SELENIUM_FORWARD_DEVTOOLS_TO_PORT": "9229",
   },
+  "runArgs": ["--name","discourse"], // Schritt 1
   "mounts": [
     "source=${localWorkspaceFolderBasename}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume",
     "source=${localWorkspaceFolderBasename}-pg,target=/shared/postgres_data,type=volume",

p.s. Bitte lassen Sie mich wissen, wenn Sie wissen, wie ich den Hostnamen *.orb.local und den Containernamen dynamisch festlegen kann, wie es für GitHub Codespaces definiert ist. Das Festlegen des Werts als .app.github.dev,.orb.local hat bei mir nicht funktioniert.

Update: Irgendwie fehlte ein Eintrag in meiner /etc/hosts-Datei. Nachdem ich diese Zeile hinzugefügt hatte, konnte ich die Wildcard-Domain .orb.local in Schritt 2 verwenden.

Mit diesen Änderungen in der devcontainer.json-Datei kann ich jetzt meine lokale Discourse-Instanz unter https://discourse.orb.local/ ausführen.

/etc/hosts

Fügen Sie diese Zeile zu Ihrer /etc/hosts-Datei hinzu, falls sie noch nicht vorhanden ist.

##
# Docker und OrbStack
##
127.0.0.1 host.docker.internal

Bonus-Tipp 1
Wenn Ihre Netzwerkeinstellungen, Ihr Firmen-VPN oder ähnliches mit den IP-Bereichen von OrbStack-Containern in Konflikt geraten, aktualisieren Sie OrbStack mit einem anderen Bereich.

Bonus-Tipp 2
Wenn Sie Schritt 1 weglassen, erstellt OrbStack einen Container mit zufälligem Namen, aber Sie können HTTPS trotzdem ohne Angabe einer Portnummer verwenden. Der Nachteil ist der Containername, und damit wird der Domainname jedes Mal aktualisiert, wenn Sie den Container neu erstellen.