Angular Docker 热重载不适用于 Windows

标签 angular docker

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

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

web_1 |错误! enoent ENOENT:没有这样的文件或目录,打开“/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"

感谢任何帮助。 谢谢你。

最佳答案

您的配置中有些地方出错了,首先我假设您要绑定(bind) C:/Users/test-docker/usr/src/app/node_module

如果不是这种情况,您需要将本地项目目录绑定(bind)到 /usr/src/app/node_module .您可以使用语法 -v <source_dir>:<target_dir> 来执行此操作如 docs 中所述.

所以这将导致 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 镜像中当前存在的文件将始终保持不变,除非您重新启动它。当您将项目目录直接绑定(bind)到容器中时,此步骤将变得过时。

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

希望对你有帮助

关于Angular Docker 热重载不适用于 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53230974/

相关文章:

docker - 以 root 用户身份运行容器

docker - 大型文件的最佳kubernetes存储选项

javascript - 返回 Promise 的 AngularFire2 方法不适用于 fromPromise

javascript - 如何在 Angular 5+ 中将 JavaScript 附加到 div?

javascript - Angular 嵌套 FormArray

docker - 从 docker-compose 替换 NGINX 配置中的环境变量

jenkins - Jenkins Pipeline 插件是否支持 Docker Compose?

docker - 安装了docker,我得到了podman

angular - *ngFor 中的 Mat-Tooltips

angular - 应用程序 ionic : Chrome not sending right cookies in cors http request