Docker Port Not Mapping - PullRequest
       16

Docker Port Not Mapping

0 голосов
/ 03 ноября 2019

Извините, если это окажется очевидным, но мне трудно получить доступ к докеризованному серверу снаружи контейнера на хосте. Вот что я делаю:

Я запускаю контейнер с помощью следующей команды:

docker run -it --rm --name aurelia_dev -p 8888:8080 -v /Users/terskine/git/marvel/legendary:/app aurelia /bin/bash

Внутри контейнера я запускаю приложение:

cd app/
au run

В отдельном терминале я вижу, что контейнер работает:

$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
4b0a14bc6e88        aurelia             "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:8888->8080/tcp   aurelia_dev

Однако я не могу связаться с сервером:

$ curl http://localhost:8888
curl: (52) Empty reply from server

Но внутри контейнера я могусвязаться с сервером:

$ docker exec -it aurelia_dev /bin/bash
root@4b0a14bc6e88:/# curl http://localhost:8080
<!DOCTYPE html> ...
<html>
... [A whole bunch of HTML] ...
</html>
root@4b0a14bc6e88:/# 

Почему я не могу получить доступ к серверу снаружи контейнера через порт хоста 8888?

Я уверен, что пропустил очевидный шаг. Пожалуйста, помогите мне.

Спасибо!


Редактировать 1: Я не думаю, что следующее необходимо, но если это полезно, я запускаю простой контейнер aurelia, который ясозданный со следующим Dockerfile:

FROM node

RUN npm install -g aurelia-cli

CMD /bin/bash

Проект aurelia, который я запускаю, является официальным учебным проектом, который можно найти здесь: https://aurelia.io/docs/tutorials/creating-a-contact-manager


Edit 2:

Это содержимое моего хост-файла.

root@d7d1cc03a5c0:/# cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      d7d1cc03a5c0

И, похоже, я не слушаю 172.17.0.2:8080

root@d7d1cc03a5c0:/# curl 172.17.0.2:8080
curl: (7) Failed to connect to 172.17.0.2 port 8080: Connection refused

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Я ответил, что в другой ветке, но для других людей, которые просто ищут ответ здесь, это:

Вы можете переопределить host и port почти во всех командах aurelia, au runодин из них,

Примеры:

au run --host 0.0.0.0 --port 7070

au run --watch --host 127.0.0.1 --port 7080

такой же набор флагов также существует для au cypress и au protractor, кроме того, вы также можете указать au запускать и завершать работу приложения до и после запуска тестов, снова на другом порту и IP-адресе, если вы этого хотите.

Пример:

au cypress --run --start --port 7070 --host 127.0.0.1

au protractor --headless --start --port 7070 --host 127.0.0.1

оформить заказ здесь и здесь

Также вы можете проверить документациюна Aurelia Build Systems и в моем блоге на Средний

0 голосов
/ 04 ноября 2019

Это оказалось не проблема с моей конфигурацией Docker. Скорее это была проблема с веб-пакетом, который используется Аурелией. Webpack не будет работать с localhost в док-контейнере, пожалуйста, проверьте здесь .

Чтобы решить проблему, вы должны указать 0.0.0.0 в качестве хоста, а не использовать значение по умолчанию, которое составляет localhost.

au run --host 0.0.0.0

Примечание: я задал вопрос о реальнойпроблема здесь и ответила на нее, так что было бы легче найти тех, у кого такая же проблема в будущем, но я оставляю этот вопрос, потому что могут быть такие люди, как я, которые думают, что это докерпроблема конфигурации.

...