Невозможно получить доступ к приложению nodejs в браузере на локальном хосте:4200 (Docker запустит -p 4200:4200 ....)

Пожалуйста, мне нужна помощь, новичок в докере; Я чувствую, что это что-то незначительное, что я пропустил.

Я пытаюсь запустить приложение nodejs, используя dockerfile и docker-compose; Я нахожусь на Ubuntu 17.04 LTS, однако, несмотря на то, что статус показывает UP и работает, я не могу получить доступ к приложению с localhost:4200

docker-compose.yml
version: '3'

services:
 my-app:
    build:
      context: .
      dockerfile: Dockerfile
    restart: unless-stopped
    volumes:
      - .:/usr/src/app
    ports:
      - "4200:4200"

докер PS

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                     NAMES
e6a99aab4e37        my-app   "ng serve"               10 minutes ago      Up 10 minutes       0.0.0.0:4200->4200/tcp    my-app_1

Я запустил следующую команду и получил IP-адрес, я использовал этот ip: порт # в браузере, но приложение не будет отображаться:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' 'my-app_1'

когда я иду на localhost:4200 это не работает; Я также попробовал: docker run --rm -it -p 4200:4200 my_app_container и он работает, и я вижу, что запуск npm запускается и прослушивает порт 4200, но когда я иду в браузер и набираю localhost:4200 Я ничего не получаю, просто: этот сайт не может быть достигнут; ERR_NAME_NOT_RESOLVED

  ubuntu17@ubuntu:~/playground/apps/my_app-ui$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
my_app   latest              d41d3d77811b        17 minutes ago      1.24GB
nept0                 latest              df93134e2539        21 minutes ago      1.24GB
node                  9                   c888d933885c        5 days ago          676MB
registry              2.6.1               c2a449c9f834        6 months ago        33.2MB
ubuntu17@ubuntu:~/playground/apps/my_app-ui$ docker run -it --rm -p 4200:4200 nept0
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
Date: 2018-01-16T15:46:19.502Z                                                          
Hash: 00ec980debaf8e47350d
Time: 12386ms
chunk {inline} inline.bundle.js (inline) 5.79 kB [entry] [rendered]
chunk {main} main.bundle.js (main) 270 kB [initial] [rendered]
chunk {polyfills} polyfills.bundle.js (polyfills) 549 kB [initial] [rendered]
chunk {styles} styles.bundle.js (styles) 511 kB [initial] [rendered]
chunk {vendor} vendor.bundle.js (vendor) 11.8 MB [initial] [rendered]

webpack: Compiled successfully.

ПОСЛЕДНЕЕ: - Самое странное, если я не использую Docker и просто создаю приложение вручную, просто запустив: ng serve or npm serve который смотрит в package.json -> Сценарий и начинает ng serve, затем localhost:4200 работает нормально, поэтому я потерял на 1.

Почему я не могу получить доступ localhost:4200 или же ipaddress:4200 в браузере при запуске через docker, но это работает, если я собираю вручную вне docker, просто запустив npm start?

1 ответ

РЕДАКТИРОВАТЬ

/questions/9402114/prilozhenie-nodejs-ne-podklyuchaetsya-k-localhost-pri-zapuske-v-kontejnere-docker/9402120#9402120

Есть решение.

РЕДАКТИРОВАТЬ

Прежде всего. Почему ты это сделал.

#EXPOSE 4200

в Dockerfile. # перед означает комментарий в dockerfile. Использовать этот

 EXPOSE 4200

#EXPOSE 4200 means you have not expose the port .

И затем проверьте, работает ли ваш сервер узлов внутри Docker или нет. Как вы можете проверить это. docker exec -it nept0 bash или можете попробовать

docker exec -it nept0 /bin/bash

Тогда вы можете запустить

curl localhost:4200 или get api для node.js, если это работает нормально, ваш узел работает нормально #EXPOSE 4200 был виновником.

Вы можете прочитать о Docker Exec здесь больше https://docs.docker.com/engine/reference/commandline/exec/

Дайте мне знать, если возникнет проблема.

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