Горячая перезагрузка Angular Docker не работает на Windows - PullRequest
0 голосов
/ 09 ноября 2018

Запуск только что созданного углового приложения в Docker-контейнере в Windows не приводит к горячей перезагрузке приложения при изменениях. Я пробовал это Контейнер Docker не перезагружает приложение Angular .

, но продолжает падать, если я создаю образ, затем запускаю контейнер, который я получаю:

web_1 | npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json'

Я также пытался следовать этой статье (работает на Mac, но не на Windows):
Докеризация углового приложения

Я пытался добавить --poll к своему angular.json:

"docker": {
    "poll": 2000
},
  • Это мой DockerFile
FROM node:8.11.2

# 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

COPY package.json /usr/src/app/package.json
RUN npm install
RUN npm install -g @angular/cli@6.1.5

# add app
COPY . /usr/src/app

EXPOSE 4200 49153
# start app
CMD ng serve --port 4200 --host 0.0.0.0 --poll 1

Вот так я запускаю:
docker build -t something-clever .

Для контейнера:
docker run -it -v C:/Users/test-docker -v /usr/src/app/node_module -p 4200:4200 -p 49153:49153 --rm something-clever bash -c "npm start"

Любая помощь приветствуется. Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Вы ошиблись node_modules. Ваша команда запуска докера имеет node_module.

Запустите Docker с помощью следующей команды:
docker run -it -v C:\Users\test-docker:/usr/src/app/node_modules -p 4200:4200 -p 49153:49153 --rm something-clever bash -c "npm start"

Пользователю Windows могут потребоваться дополнительные кавычки в параметрах:
docker run -it -v "C:\Users\test-docker:/usr/src/app/node_modules" -p 4200:4200 -p 49153:49153 --rm something-clever bash -c "npm start"

0 голосов
/ 07 декабря 2018

В вашей конфигурации есть несколько проблем, во-первых, я предполагаю, что вы хотите связать C:/Users/test-docker с /usr/src/app/node_module?

Если это не так, вам нужно привязать локальный каталог проекта к /usr/src/app/node_module. Вы можете сделать это, используя синтаксис -v <source_dir>:<target_dir>, как описано в документах .

Так что это приведет к docker run -it -v C:/Users/test-docker:/usr/src/app/node_module -p 4200:4200 -p 49153:49153 --rm something-clever bash -c "npm start"

Во-вторых, вы в настоящее время копируете файлы, когда вы строите образ, а не когда вы запускаете его. Это означает, что файлы, присутствующие в настоящее время в образе докера, всегда останутся прежними, если вы не перезапустите его. Этот шаг устареет, когда вы свяжете каталог вашего проекта непосредственно в контейнер.

При этом файлы будут обновляться на вашем хосте и внутри контейнера докера. Таким образом, вы можете просто удалить строки копирования из файла Docker после того, как вы исправили монтирование томов.

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...