#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. идеально, что это было!