Developing Discourse using a Dev Container

Die Anweisungen für Nicht-VS-Code haben bei mir unter macOS gerade nicht funktioniert. Ich empfehle macOS-Benutzern, die außerhalb von VS Code mit dem Discourse-Docker-Image interagieren möchten, stattdessen das herkömmliche Docker-Skript boot_dev zu verwenden.

Mit docker ps habe ich den Namen meines Containers gefunden (ein zufällig generierter alberner Name, wie peaceful_lumiere). Ich habe docker inspect peaceful_lumiere | jq '.[0].NetworkSettings.Networks.bridge.IPAddress' ausgeführt, und es wurde eine IP-Adresse ausgegeben. In meinem Browser habe ich http://<ip>:4200 aufgerufen, und es drehte sich ewig.

Ich glaube, das liegt daran, dass der ember-cli-Entwicklungsserver nicht auf allen Schnittstellen lauscht; er hört nur auf http://127.0.0.1:4200 innerhalb des Containers.

Letztendlich habe ich es zum Laufen gebracht, indem ich einen runArgs-Abschnitt zu .devcontainer/devcontainer.json hinzugefügt habe, so wie hier:

     8025, // mailhog
     9229  // chrome remote debug
   ],
+  "runArgs": [
+    "-p",
+    "127.0.0.1:4200:4200",
+    "-p",
+    "127.0.0.1:3000:3000",
+    "-p",
+    "127.0.0.1:9292:9292",
+    "-p",
+    "127.0.0.1:8025:8025",
+    "-p",
+    "127.0.0.1:9229:9229"
+  ],
   "remoteUser": "discourse",
   "remoteEnv": {
     "RAILS_DEVELOPMENT_HOSTS": ".app.github.dev",

… aber wenn du das tust, wird es nicht in VS Code funktionieren (weil sowohl VS Code als auch der Dev-Container versuchen, Ports weiterzuleiten). Ich habe eine separate devcontainer-cli.json erstellt und devcontainer --override-config .devcontainer/devcontainer-cli.json verwendet, und das hat funktioniert.

Dann wurde mir klar: Ich habe all diese Umwege genommen, bin aber nicht besser dran als mit dem bestehenden herkömmlichen boot_dev-Skript. Die dort dokumentierten Schritte zu befolgen ist schneller und einfacher, als zu versuchen, devcontainer über die CLI dazu zu bringen, das Richtige zu tun.

Dev-Container sind primär für die Verwendung in VS Code oder etwas gedacht, das die Portweiterleitung automatisch für dich verwaltet; die devcontainer-CLI macht das nicht. Wenn du also VS Code nicht verwenden möchtest, lass vielleicht besser die Finger von Dev-Containern.