Из информации, представленной в вопросе, если вы видите журналы приложения
(docker logs <container_id>
), после чего приложение-докер запускается успешно и похоже, что порт работает правильно.
В любом случае, чтобы увидеть сопоставление портов, когда контейнер запущен и работает, вы можете использовать:
docker ps
и проверьте раздел "ПОРТЫ"
Если вы видите там что-то вроде 0.0.0.0:3000->3000/tcp
Тогда я могу подумать о некоторых правилах брандмауэра, которые предотвращают доступ к приложению ...
Другая возможная причина (хотя, возможно, вы уже проверили это) заключается в том, что приложение запускается и заканчивается до того, как вы на самом деле попытаетесь получить к нему доступ в браузере.
В этом случае docker ps
не будет отображать покинутый контейнер, но docker ps -a
покажет.
Последнее, что я могу вспомнить, это то, что в самом докер-контейнере приложение на самом деле не отвечает на порт 3000 (я имею в виду, может быть, сценарий запуска запускает веб-сервер на каком-то другом порту, поэтому выставление порта 3000 не на самом деле ничего полезного).
Для того, чтобы проверить это, вы можете ввести в сам док-контейнер что-то вроде docker exec -it <container_id>
bash
и проверьте наличие открытых портов с помощью lsof -i
или просто wget localhost:3000
изнутри контейнера itelf