Эти инструкции, не связанные с VS Code, не сработали для меня только что на macOS. Я рекомендую пользователям macOS, которые хотят взаимодействовать с образом Docker Discourse вне VS Code, использовать устаревший скрипт Docker boot_dev.
С помощью команды 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 внутри контейнера.
В конце концов я заставил это работать, добавив секцию runArgs в файл .devcontainer/devcontainer.json, вот так:
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. Следование этим документированным шагам быстрее и проще, чем попытки заставить devcontainer делать нужное действие из CLI.
Dev Containers предназначены в первую очередь для использования в VS Code или в чём-то ещё, что автоматически управляет перенаправлением портов; CLI devcontainer этого не делает. Поэтому, если вы не хотите использовать VS Code, возможно, не стоит связываться с Dev Containers.