Как получить доступ к веб-приложению, работающему как контейнер в Ubuntu, из моей системы Windows

#windows #docker #ubuntu #containers

#Windows #docker #ubuntu #контейнеры

Вопрос:

Я запускаю веб-приложение (скопированное из примеров github), которое выполняется как контейнер на удаленной виртуальной машине Ubuntu. Приложение представляет собой узловое JS-приложение, использующее базу данных mysql. Я запустил приложение с помощью docker-compose в Ubuntu.

Приложение появилось какhttp://172….:3000 используя сетевой порт. IP-адрес отображается в терминале docker-compose. В системе Ubuntu, когда я выполняю curl http://172….:3000 , это дает надлежащий ответ об успешном завершении. IP-адрес — это сетевой адрес контейнера. Это не IP-адрес виртуальной машины. Брандмауэра нет.

Как получить доступ к веб-приложению с моего компьютера с Windows 7. Когда я попытался получить доступ с помощью http://VM IP-адрес: 3000, он не попадает в систему Ubuntu. Я не получаю никаких сообщений в терминале docker-compose. Кто-нибудь может здесь помочь?

Комментарии:

1. есть ли брандмауэр в Ubuntu?

2. Можете ли вы добавить описание вашего системного макета к вопросу? Какова взаимосвязь между хостом Windows, системой Ubuntu, виртуальной машиной, контейнером и 172… IP-адрес?

3. Надеюсь, теперь я объяснил лучше. В Ubuntu нет брандмауэра. В docker-compose я вижу сетевой режим, сеть. Могу ли я использовать эти свойства в docker-compose.yml.

4. Можете ли вы предоставить фрагмент раздела port в docker-compose, если возможно, проект GitHub и ответ docker ps

5. проект github: github.com/paigen11/mySqlRegistration Вы можете проверить docker-compose.yml в этом проекте github.

Ответ №1:

 ports:
  - "3031:3000"
  

аналогичная строка в вашем docker compose означает, что вы опубликовали порт 3000 вашего контейнера на порт 3031 вашей виртуальной машины Ubuntu.

теперь вы можете получить доступ к своей client службе как http://<ubuntu-ip>:3031 , но перед этим вам необходимо разрешить доступ к порту 3031