Angular Docker热重装无法在Windows上运行

时间:2018-11-09 17:53:28

标签: angular docker

在Windows的Docker容器中运行新创建的角度应用程序不会在更改时热重新加载该应用程序。 我尝试了这个Docker container doesn't reload Angular app

但一直失败,如果我创建映像,然后运行得到的容器:

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

我还尝试了以下文章(适用于Mac,但不适用于Windows):
Dockerizing an Angular App

我尝试将--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 :(得分:3)

在您的配置中出现了一些问题,首先我假设您要将C:/Users/test-docker绑定到/usr/src/app/node_module

如果不是这种情况,则需要将本地项目目录绑定到/usr/src/app/node_module。您可以使用docs中所述的语法-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映像中当前存在的文件将始终保持不变。当您直接将项目目录绑定到容器中时,此步骤将变得过时。

这样做,文件将同时在docker容器内的主机上更新。因此,您可以在固定卷安装后从docker文件中删除复制行。

希望对您有帮助

答案 1 :(得分:1)

您拼写错误的node_modules。您的docker run命令具有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"