Использование Ubuntu.
На основе этого руководства:
https://www.freecodecamp.org/news/how-to-use-routing-in-vue-js-to-create-a-better-user-experience-98d225bbcdd9/
Я создал минимальный проект vuejs со структурой проекта ниже:
https://github.com/dev-samples/samples/tree/master/vuejs-001
frontend-router/
build/
config/
src/
static/
test/
build.sh
Dockerfile.dev
package-lock.json
package.json
Где:
Dockerfile.dev
FROM node:10
RUN apt install curl
RUN mkdir /app
# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /app/package.json
# make the 'app' folder the current working directory before running npm install
WORKDIR /app
RUN npm install
CMD [ "npm", "run", "dev" ]
Я создаю образ и запускаю контейнер из этого образас:
docker build -t frontend-router-image -f Dockerfile.dev .
docker rm -f frontend-router-container
docker run -it -p 8081:8080 -v ${PWD}:/app/ -v /app/node_modules --name frontend-router-container frontend-router-image
, что дает:
DONE Compiled successfully in 1738ms 3:49:45 PM
I Your application is running here: http://localhost:8080
Поскольку я добавляю -p 8081:8080
к команде запуска docker, я ожидаю, что я смогу получить доступ к приложению из моего главного браузера на:
http://localhost:8081/
но выдает следующее сообщение об ошибке:
![enter image description here](https://i.stack.imgur.com/M0NJQ.png)
Я отлично работаю, когда запускаю его с ванильюнпм от моего хозяина. Но почему я не могу получить доступ к приложению, когда оно запускается из контейнера Docker?
Исходный код здесь:
https://github.com/dev-samples/samples/tree/master/vuejs-001
Как предложено ниже, я попытался:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e011fb9e39e8 frontend-router-image "docker-entrypoint.s…" 12 seconds ago Up 9 seconds 0.0.0.0:8081->8080/tcp frontend-router-container
$ docker run -it --rm --net container:frontend-router-container nicolaka/netshoot ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:8080 0.0.0.0:*
Для сравнения этот проект работает нормально:
https://github.com/dev-samples/samples/tree/master/vuejs-002
Это означает, что когда я запускаю контейнер, я могу получить доступ к веб-приложению через браузер хоста на localhost:8081