我有一个构建我的角度应用程序的dockerfile:
FROM node:8.11.3-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install -g nodemon
RUN npm install -g @angular/cli@6.0.8 && npm install
COPY . /usr/src/app
EXPOSE 5004
CMD ng serve --host 0.0.0.0
我想将热重装添加到我的docker容器中,以便代码更改自动反映在我的浏览器中。
Nodemon 似乎是启用热重装的最佳工具,只是我似乎无法使用Dockerfile对其进行正确配置。
有人可以向我解释在Docker中使用nodemon的最佳方法,以便我的角度应用可以热重载吗?
答案 0 :(得分:0)
您的Dockerfile将所有项目数据复制到容器中。该副本将不受主机上文件更改的影响。
要更改此设置,可以将带有项目代码的卷装入容器。为此,运行容器:
-v ./src:/usr/src/app/src
它将把本地的角度src文件夹安装到容器中。无需覆盖已安装的npm_modules文件夹。
如果在Windows上,则hyper-v和文件更改存在问题。作为解决方法,您可以使用--poll标志运行ng serve以启用轮询。在我们的文件中将是
CMD ng serve --poll 200 --host 0.0.0.0
ng服务现在将每200毫秒主动检查一次文件更改。
答案 1 :(得分:0)
为此解决了问题。
docker run -u $(id -u) --rm -p 4200:4200 -v "$PWD":/app trion/ng-cli ng serve -host 0.0.0.0