Мой пост очень похож на этот .У меня есть контейнер Docker, на котором запущено очень простое приложение node.js / express, прослушивающее порт 3000, на Google Compute Engine с включенными правилами брандмауэра http и https.
По какой-то причине, однако, ни один процесс не прослушиваетобщественные порты (443 и 80).Когда я набираю sudo netstat -tnlp tcp
, я получаю:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN 288/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 296/sshd
tcp6 0 0 :::5355 :::* LISTEN 288/systemd-resolve
tcp6 0 0 :::3000 :::* LISTEN 1216/node
Также, когда я запускаю nmap <EXPOSED_IP>
, я получаю:
Not shown: 993 filtered ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp closed http
443/tcp closed https
554/tcp open rtsp
3389/tcp closed ms-wbt-server
7070/tcp open realserver
Я знаю, что ничего не слушает порты 443 или порт80, и я вижу, что мое приложение прослушивает порт 3000, но я не уверен, как это изменить / отобразить / выставить.Я попытался изменить свой docker-compose на:
...
ports:
- "80:3000"
- "443:3000"
- "3000:3000"
...
Но, похоже, это не сработало.Я знаю, что я не использую docker-compose в ВМ, так что имеет смысл, что это не имеет значения.Я прочитал здесь Я не должен показывать публичные порты в Dockerfile, чтобы иметь возможность запускать несколько контейнеров на одном экземпляре виртуальной машины, что имеет смысл.Но все еще не уверен, как сопоставить 443 и 80 с моим контейнером.Есть идеи?
ОБНОВЛЕНИЕ:
Согласно документации :
Вы можете развернуть только один контейнер для каждого экземпляра виртуальной машины.Рассмотрим Kubernetes Engine, если вам нужно развернуть несколько контейнеров на один экземпляр виртуальной машины.Свяжитесь с командой, если ваш вариант использования требует от вас развертывания нескольких контейнеров в экземпляре Compute Engine.
Похоже, мне разрешено запускать только один контейнер на ВМ, так что, возможно, я попытаюсь переслатьпорты на моем Dockerfile ...