在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
},
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"
感谢您的帮助。 谢谢。
答案 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"