Developing Discourse using a Dev Container

Se você estiver usando o OrbStack (não afiliado) em seu ambiente macOS local e quiser executar o Discourse em HTTPS com um domínio personalizado, atualize seu devcontainer.json com as seguintes adições:

  1. Dê um nome ao contêiner.
  2. Adicione o domínio curinga .orb.local à variável de ambiente RAILS_DEVELOPMENT_HOSTS (os nomes de host devem ser separados por vírgula).
--- 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", // Passo 2
     "PGUSER": "discourse",
     "SELENIUM_FORWARD_DEVTOOLS_TO_PORT": "9229",
   },
+  "runArgs": ["--name","discourse"], // Passo 1
   "mounts": [
     "source=${localWorkspaceFolderBasename}-node_modules,target=${containerWorkspaceFolder}/node_modules,type=volume",
     "source=${localWorkspaceFolderBasename}-pg,target=/shared/postgres_data,type=volume",

p.s. por favor, me avise se você souber como definir o nome de host *.orb.local e o nome do contêiner dinamicamente, como é definido para o GitHub Codespaces. Definir o valor como .app.github.dev,.orb.local não funcionou para mim.

Atualização: De alguma forma, estava faltando um registro no meu arquivo /etc/hosts. Após adicionar esta linha, pude usar o domínio curinga .orb.local no passo 2.

Com essas alterações no arquivo devcontainer.json, agora posso executar minha instância local do Discourse em \u003chttps://discourse.orb.local/\u003e

/etc/hosts

Adicione esta linha ao seu arquivo /etc/hosts se você ainda não o tiver.

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

Dica bônus 1
Se, por algum motivo, suas configurações de rede, ou a rede VPN da sua empresa, etc., entrarem em conflito com os intervalos de IP de contêiner do OrbStack, atualize seu OrbStack com um intervalo diferente.

Dica bônus 2
Se você omitir o passo 1, o OrbStack criará um contêiner com um nome aleatório, mas você ainda poderá usar HTTPS sem adicionar nenhum número de porta. A desvantagem é o nome do contêiner, portanto, o nome do domínio será atualizado toda vez que você reconstruir o contêiner.