Developing Discourse using a Dev Container

macOS ローカル環境で OrbStack (非公式) を使用しており、カスタムドメインで Discourse を HTTPS で実行したい場合は、devcontainer.json を次のように更新してください。

  1. コンテナに名前を付けます。
  2. RAILS_DEVELOPMENT_HOSTS 環境変数に .orb.local ワイルドカードドメインを追加します (ホスト名はコンマで区切る必要があります)。
--- 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", // ステップ 2
     "PGUSER": "discourse",
     "SELENIUM_FORWARD_DEVTOOLS_TO_PORT": "9229",
   },
+  "runArgs": ["--name","discourse"], // ステップ 1
   "mounts": [
     "source=${localWorkspaceFolderBasename}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume",
     "source=${localWorkspaceFolderBasename}-pg,target=/shared/postgres_data,type=volume",

追伸: GitHub Codespaces のように、*.orb.local ホスト名とコンテナ名を動的に設定する方法を知っていたら教えてください。.app.github.dev,.orb.local のように値を設定しても機能しませんでした。

更新: なぜか /etc/hosts ファイルにレコードが欠落していました。この行を追加した後、ステップ 2 で .orb.local ワイルドカードドメインを使用できるようになりました。

これらの変更を devcontainer.json ファイルに加えることで、ローカルの Discourse インスタンスを https://discourse.orb.local/ で実行できるようになります。

/etc/hosts

まだ /etc/hosts ファイルにこの行を追加していない場合は、追加してください。

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

ボーナスのヒント 1
ネットワーク設定や会社の VPN ネットワークなどが OrbStack のコンテナ IP 範囲と競合する場合は、OrbStack を別の範囲に更新してください。

ボーナスのヒント 2
ステップ 1 を省略すると、OrbStack はランダムな名前のコンテナを作成しますが、ポート番号を付けずに HTTPS を使用できます。欠点は、コンテナ名、したがってドメイン名がコンテナを再構築するたびに更新されることです。