Npm запускает службу в контейнере Docker

#docker #vue.js #vue-cli

Вопрос:

Я только что выучил Докера.

Я скачал файл изображения ubuntu 18.04.

nodejs и npm устанавливаются в контейнер.

После того, как я установил необходимые пакеты, npm install .

Воспользуйся npm run serve .

Я не вижу localhost:8080 во внешней сети mac.

Я выполняю поиск в Google на основе следующей информации.

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

Но я вижу, что все используют файл docker.

Потому что я только что выучил docker, но мало что знаю о файле docker.

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

 docker exec -it 858ba945a7386a7b318587ea35d903fb78b5bc6324d3bbc14c2969d7974ea44d /bin/bash 
 

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

1. Здесь слишком многое нужно пережить. Но вы должны начать с файла dockerfile. Используйте это для обеспечения вашего контейнера. Когда вы запускаете его, вы должны затем указать порты, к которым вы хотите получить доступ с вашего хоста. Вы еще довольно далеки от того, чтобы правильно использовать это.

2. Вы хотите использовать контейнеры для целей разработки или развертывания?

3. Сейчас я только на стадии разработки, поэтому хочу использовать самый простой способ для достижения этой цели.

4. У Docker есть пример учебника по приложениям , который проходит через файловую систему Docker (даже с приложением узла). Как говорит @SoftwareEngineer, это в основном необходимая часть использования Docker.

Ответ №1:

Первый

Используйте непосредственно официальный node:<version> образ, а не ubuntu или другой образ S. O. Рекомендуется исправить версию.

Образ узла содержит узел, npm и среду S. O.

Второй

Если вы используете Docker Compose, docker-compose.yml вам нужно сопоставить порты вашего сервиса (которые содержат node изображение) следующим образом:

 ports:
   - "8080:8080" 
 

где первое-это то, что вы вызываете из своего браузера (http://localhost:8080).

(Игнорируйте возможный отдельный контейнер nginx/веб-сервера).

Если вы используете Docker непосредственно, вы запускаете команду с параметром-p, как это:

 docker run -p 8080:8080 <container>
 

Ответ №2:

вы должны добавить сопоставление портов см. Документы

-p 8080:8080 Сопоставьте TCP-порт 80 в контейнере с портом 8080 на хосте Docker.

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

1. docker -p 8080:8080 exec -it 858ba945a7386a7b318587ea35d903fb78b5bc6324d3bbc14c2969d7974ea44d /bin/bash ?? Это не работает