Developing Discourse using a Dev Container

如果您正在本地 macOS 环境中使用 OrbStack(非官方),并且希望使用自定义域名以 HTTPS 运行 Discourse,请在您的 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",

附注:如果您知道如何动态设置 *.orb.local 主机名和容器名称(如 GitHub Codespaces 中所定义),请告诉我。对我来说,将值设置为 .app.github.dev,.orb.local 并未奏效。

更新: 不知何故,我的 /etc/hosts 文件中缺少一个记录。添加此行后,我便能够使用步骤 2 中的 .orb.local 通配符域名。

通过对 devcontainer.json 文件进行这些更改,我现在可以在 https://discourse.orb.local/ 上运行我的本地 Discourse 实例。

/etc/hosts

如果您的 /etc/hosts 文件中还没有,请添加此行。

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

奖励提示 1
如果您的网络设置或公司 VPN 网络等与 OrbStack 的容器 IP 地址范围发生冲突,请在 OrbStack 中更新为不同的范围。

奖励提示 2
如果省略步骤 1,OrbStack 将创建一个随机命名的容器,但您仍然可以使用 HTTPS,而无需附加任何端口号。缺点是容器名称(因此域名)会在每次重建容器时刷新。