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:
-
inotify – >只需在
"scripts"
一节中编辑package.json
这一行:"start": "ng serve --host 0.0.0.0 --poll"
,只有Windows主机才需要, -
热重新加载 – >在
Dockerfile
和端口添加expose 49153
- '49153:49153'
像dockerdocker-compose.yml
- '49153:49153'
像提到的@kstromeiraos。
- docker ERR_NAME_NOT_RESOLVED http ajax
- Docker Selenium – testing通过Chrome,但不是Firefox
- 启用后,Navigator Geolocation API将引发错误代码PERMISSION_DENIED
- Docker Angular Node Sass无法为您当前的envfind一个绑定:使用Node.js 8.x的Linux 64位
- 如何通过节点Jsdocker化Angular 2 Web应用程序?
- Docker&Angular 2:绑定目录保持空白
- 用于angular-cli应用程序的Dockerfile返回ng:command not found
- 节点ArrayLiteralExpression未通过testing“isTypeNode”
- 在Docker镜像中的构build错误