Не удается получить доступ к Vue CLI внутри контейнера docker

#docker #vue.js

#docker #vue.js

Вопрос:

На основе этого руководства:

https://shekhargulati.com/2019/01/18/dockerizing-a-vue-js-application/

Я создал образец приложения VueJS и создал образ docker:

 docker build -t myapp .
  

на основе приведенного ниже файла Dockerfile:

 # base image
FROM node:10.15.0

# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app

# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install
RUN npm install -g @vue/cli
# start app
CMD ["npm", "run", "serve"]
  

Затем я запускаю контейнер docker с:

 docker run -it -v ${PWD}:/usr/src/app -v /usr/src/app/node_modules -p 5000:5000 myapp
  

и получить этот (успешный) вывод:

 DONE  Compiled successfully in 4644ms                                                                                 4:05:10 PM

No type errors found
No lint errors found
Version: typescript 3.4.3, tslint 5.15.0
Time: 4235ms

  App running at:
  - Local:   http://localhost:8080/ 

  It seems you are running Vue CLI inside a container.
  Access the dev server via http://localhost:<your container's external mapped port>/

  Note that the development build is not optimized.
  To create a production build, run npm run build.
  

Затем я пытаюсь получить доступ к приложению из своего браузера: http://localhost:5000 / но я просто получаю сообщение об ошибке сброса соединения.

Я также попытался проверить информацию о порте в запущенном контейнере с:

 $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
755d2745bce2        myapp               "npm run serve"     22 seconds ago      Up 18 seconds       0.0.0.0:5000->5000/tcp   confident_mirzakhani
$ docker port confident_mirzakhani
5000/tcp -> 0.0.0.0:5000
  

Но это в основном подтверждает информацию о порту, которую я передал команде run.

Есть предложения о том, как получить доступ к приложению VueJS в контейнере из браузера на моем хосте?

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

1. согласно опубликованному выводу, приложение работает на 8080!

2. Да, конечно, я пробовал это, но там тоже не работает. И если вы прочтете немного дальше в выходных данных, там также будет сказано: «Доступ к серверу разработки через localhost: <внешний сопоставленный порт вашего контейнера> /»

3. вам необходимо сопоставить тот же порт, на котором запущено приложение, поэтому либо используйте CMD [«npm», «run», «serve», «—port», «5000»] в Dockerfile, либо измените сопоставление портов в docker run command -p 8080:8080

4. идеально, что это было!