Невозможно получить доступ к веб-серверу angular внутри linux contianer с хоста windows

Я развертываю приложение angular внутри контейнера ubuntu, который размещен в Windows 10. Вот мой файл докеров:

FROM ubuntu:latest
COPY app /app
RUN apt-get update
RUN apt-get install -y curl software-properties-common python-pip
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get install -y nodejs
RUN npm install -g @angular/cli
RUN pip install -r /app/requirements.txt
WORKDIR /app/ng
RUN npm install
RUN npm rebuild node-sass
EXPOSE 4200
WORKDIR /
RUN touch start.sh
RUN echo "python /app/server.py &" >> start.sh
RUN echo "cd /app/ng" >> start.sh
RUN echo "ng serve" >> start.sh
RUN chmod +x start.sh
ENTRYPOINT ["/bin/bash"]
CMD ["start.sh"]

Я запускаю изображение, используя

docker run -p 4200:4200 --name=test app

Теперь проблема в том, что я запускаю этот контейнер в Windows 10, с которым я не очень хорошо знаком с точки зрения докеров для работы в сети. Если бы я работал с Linux, я мог бы легко получить доступ к приложению через любой браузер, посетив http://localhost:4200, но, похоже, это не так в Windows 10. Когда я пытаюсь получить доступ к своему приложению через Chrome, я получаю

This site can’t be reached
localhost refused to connect.
ERR_CONNECTION_REFUSED

Я попытался найти и нашел аналогичная проблема на форумах докеров. Принимая эти предложения, я попытался получить доступ к контейнеру через свой IPv4-адрес, но не смог. Я также пробовал использовать docker NAT IP 10.0.75.1, но безрезультатно. Я получил IP-адрес контейнера через docker inspect test и использовал IP-адрес контейнера 172.17.0.2, но это тоже не сработало.

Вывод curl с хоста:

E:\app>curl localhost:4200
curl: (7) Failed to connect to localhost port 4200: Connection refused

E:\app>curl 0.0.0.0:4200
curl: (7) Failed to connect to 0.0.0.0 port 4200: Address not available

Если я скручиваюсь внутри контейнера, он работает как положено

root@97cd2c1e6784:/# curl localhost:4200
<!doctype html>
<html lang="en">
<body>
        <p>Test app</p>
</body>
</html>

Как получить доступ к моему приложению angular из браузера хоста Windows? Если вам нужна дополнительная информация, спрашивайте в комментариях.

Не могли бы вы выполнить эту команду и добавить результаты, чтобы мы знали больше о том, как Docker работает в Windows? docker-machine ls

Oresztesz 10.09.2018 12:25
1
1
349
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

После дополнительных поисков я получил ответ здесь. Мне просто нужно было запустить сервер angular, используя ng serve --host 0.0.0.0 вместо ng serve, чтобы приложение работало на всех сетевых интерфейсах, а не только на интерфейсе цикла.

РЕШЕНО: Мне просто нужно было перезагрузить машину :). У меня была аналогичная проблема (но я не использую Docker). Когда я запускаю команду «ng serve --host 0.0.0.0», я могу скрутить ее внутри экземпляра ubuntu WSL2 (скриншот прилагается), и он работает нормально !!, но я не могу использовать браузер (в Windows 10 build 19043), он всегда возвращает «ERR_CONNECTION_REFUSED». Любые идеи?

enter image description here

enter image description here

Другие вопросы по теме