VS Code 以外の手順は、私が macOS で試したところ、うまく機能しませんでした。VS Code 外で Discourse Docker イメージと対話したい macOS ユーザーには、従来の boot_dev Docker スクリプトを使用することを強くお勧めします。
docker ps でコンテナ名(peaceful_lumiere のようなランダムで面白い名前)を確認しました。次に docker inspect peaceful_lumiere | jq '.[0].NetworkSettings.Networks.bridge.IPAddress' を実行すると、IP アドレスが出力されました。ブラウザで http://<ip>:4200 にアクセスしましたが、ずっと読み込み続けて止まりませんでした。
その原因は、ember-cli の開発サーバーがすべてのインターフェースでリスニングしていないためです。コンテナ内では http://127.0.0.1:4200 のみでリスニングしています。
最終的には、.devcontainer/devcontainer.json に runArgs セクションを追加することで動作させることができました。以下がその例です。
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",
…ただし、このようにすると VS Code 内では動作しなくなります(VS Code と devcontainer の両方がポート転送を試みるため)。私は別途 devcontainer-cli.json を作成し、devcontainer --override-config .devcontainer/devcontainer-cli.json を使用して動作させました。
しかし、その後に気づきました。これほど手間をかけても、既存の従来の boot_dev スクリプトを使うよりも進歩していないのです。ドキュメントに記載された手順に従う方が、CLI から devcontainer に正しい動作を強制しようとするよりも速く簡単です。
Dev Containers は主に VS Code、あるいはポート転送を自動的に管理してくれる何らかのツールでの使用を想定しています。devcontainer CLI はその機能を提供しません。したがって、VS Code を使わないのであれば、Dev Containers にこだわらない方が良いでしょう。