侦听更改并在代码更改时重新加载容器-docker-compose

qub*_*its 7 visual-studio docker docker-compose angular hot-reload

我在Visual Studio 2019中将docker-compose与docker用于运行linux容器的Windows。我想为角度客户端应用程序启用热重装。

我修改了运行应用程序的npm命令,使其包含民意调查,例如:

"docker-start": "ng serve --host 0.0.0.0 --port 4200 --proxy-config proxy-conf.json --poll 1"
Run Code Online (Sandbox Code Playgroud)

并向docker-compose添加一个卷,如下所示:

volumes:
  - ./ClientApp:/app/
Run Code Online (Sandbox Code Playgroud)

还另外暴露了webpack端口

ports:
  - 4200:4200
  - 49153:49153
Run Code Online (Sandbox Code Playgroud)

docker-compose文件位于存储库的根目录,Angular应用位于/ ClientApp文件夹。这使得每次我导航到localhost:4200时,应用程序都无法获取GET \。如果我注释掉了卷映射,该应用程序将开始工作,但重新加载不会。我希望它每次更改任何前端代码时都侦听代码中的更改并根据需要更新容器。

整个dockerfile:

FROM node:9.6.1

RUN mkdir -p /app
WORKDIR /app
EXPOSE 4200
EXPOSE 49153

ENV PATH /app/node_modules/.bin:$PATH

COPY . /app

RUN npm install --silent
RUN npm rebuild node-sass

CMD ["npm", "run", "docker-start"]
Run Code Online (Sandbox Code Playgroud)

Pre*_*rem 5

使用 nodemon 在代码更改时自动重新启动节点服务器。在此之前,在您的 docker 镜像中安装 nodemon 并确保它存在。

参考这个 URL 来安装 nodemon:https ://www.npmjs.com/package/nodemon

然后在 Dockerfile 中更改您的 CMD

CMD ["nodemon", "--exec", "npm", "run", "docker-start"]
Run Code Online (Sandbox Code Playgroud)

每当代码更改时,这都会重新加载您的 nodejs 应用程序