Developing Discourse using a Dev Container

Si estás usando OrbStack (no afiliado) en tu entorno macOS local y quieres ejecutar Discourse en HTTPS con un dominio personalizado, actualiza tu devcontainer.json con las siguientes adiciones:

  1. Dale un nombre al contenedor.
  2. Añade el dominio comodín .orb.local a la variable de entorno RAILS_DEVELOPMENT_HOSTS (los nombres de host deben estar separados por una coma).
--- 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", // Paso 2
     "PGUSER": "discourse",
     "SELENIUM_FORWARD_DEVTOOLS_TO_PORT": "9229",
   },
+  "runArgs": ["--name","discourse"], // Paso 1
   "mounts": [
     "source=${localWorkspaceFolderBasename}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume",
     "source=${localWorkspaceFolderBasename}-pg,target=/shared/postgres_data,type=volume",

p.d. por favor, házmelo saber si sabes cómo configurar el nombre de host *.orb.local y el nombre del contenedor dinámicamente, como se define para GitHub Codespaces. Establecer el valor como .app.github.dev,.orb.local no me funcionó.

Actualización: De alguna manera, me faltaba un registro en mi archivo /etc/hosts. Después de añadir esta línea, pude usar el dominio comodín .orb.local en el paso 2.

Con estos cambios en el archivo devcontainer.json, ahora puedo ejecutar mi instancia local de Discourse en https://discourse.orb.local/

/etc/hosts

Añade esta línea a tu archivo /etc/hosts si aún no la tienes.

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

Consejo extra 1
Si por alguna razón la configuración de tu red, o la red VPN de tu empresa, etc., entra en conflicto con los rangos de IP de los contenedores de OrbStack, actualiza tu OrbStack con un rango diferente.

Consejo extra 2
Si omites el paso 1, OrbStack creará un contenedor con un nombre aleatorio, pero aún así podrás usar HTTPS sin añadir ningún número de puerto. La desventaja es el nombre del contenedor, por lo que el nombre de dominio se actualizará cada vez que reconstruyas el contenedor.