angular - Angular Docker 热重载无法在 Windows 上运行
问题描述
在 Windows 的 docker 容器中运行新创建的 Angular 应用程序不会在更改时热重新加载应用程序。我试过这个Docker 容器不会重新加载 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"
任何帮助表示赞赏。谢谢你。
解决方案
您的配置中出现了一些问题,首先我假设您要绑定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 映像中的文件将始终保持不变,除非您重新启动它。当您将项目目录直接绑定到容器中时,此步骤将变得过时。
通过这样做,文件将在您的主机和docker 容器内更新。因此,您可以在修复卷安装后从 docker 文件中删除复制行。
我希望这可以帮助你
推荐阅读
- html - 具有三种状态的复选框
- python - 如何仅在 tkinter 中更改所选文本的属性
- firebase - Firebase Cloud Functions:`convert` 因 ChildProcessError 而失败
- reactjs - 如何将 react-helmet 与 netlify 预渲染一起使用?
- python - 如何使用 atom-python-run 包在 Atom 中运行 python 脚本?
- git - 旧的提交出现在新的拉取请求中?
- java - 无法在线性布局中移动项目
- jquery - 在更新的路线上显示移动标记 (gmaps.js)
- java - IntelliJ IDEA 添加 JDK 10:“所选目录不是 JDK 的有效主目录”
- php - 仪表板索引页四个错误,但本地主机工作良好