Docker容器不会重新加载Angular应用程序

docker-compose运行我的docker容器中有ng serve问题。

Dockerfile

 FROM node:7.1 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app RUN npm install RUN npm install -g angular-cli COPY . /usr/src/app EXPOSE 4200 CMD [ "npm", "start" ]' 

而我的docker-compose.yml

 web: build: . ports: - '8089:4200' volumes: - .:/usr/src/app/ environment: - NODE_ENV=dev command: bash -c "npm start" 

当我运行它时,一切正常,但编辑文件不会引起应用程序重新加载。 文件被改变,我敢肯定,因为我通过SSH连接检查它,并在容器中的文件被编辑。 当容器重新启动时,每改变一次都应用。 我想,当我只用docker工人转换build筑物的形象来组成这个会消失,但不。

当我打电话touch webpack docker exec webpack一些文件重新加载所有的文件,它不工作,重新启动容器。

有人有解决办法?

Webpack使用一个端口来实时重新加载应用程序。 该端口默认为49153

你必须公开和绑定容器中的端口到主机端口,这应该可以解决你的问题。

所以,把它添加到你的Dockerfile

 FROM node:7.1 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app RUN npm install RUN npm install -g angular-cli COPY . /usr/src/app EXPOSE 4200 49153 CMD [ "npm", "start" ]' 

而这个给你docker-compose.yml

 web: build: . ports: - '8089:4200' - '49153:49153' volumes: - .:/usr/src/app/ environment: - NODE_ENV=dev command: bash -c "npm start" 

我发现这两个问题的解决scheme:

  1. inotify – >只需在"scripts"一节中编辑package.json这一行: "start": "ng serve --host 0.0.0.0 --poll" ,只有Windows主机才需要,

  2. 热重新加载 – >在Dockerfile和端口添加expose 49153 - '49153:49153'像docker docker-compose.yml - '49153:49153'像提到的@kstromeiraos。