docker工具中的angular度不会重新加载更改

我是新来的docker工人,我正在试图用django-rest和angular来做一个应用程序。 我目前的docker-compose文件如下所示:

version: '3' services: db: image: postgres environment: - POSTGRES_DB=pirate - POSTGRES_USER=django - POSTGRES_PASSWORD=secreat volumes: - db-data:/var/lib/postgresql/data ports: - "5432:5432" backend: entrypoint: /entrypoint.sh build: ./backend command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db healthcheck: test: [“CMD”, “curl”, “--fail”, 'http://localhost:8000'] interval: 10s timeout: 5s retries: 3 frontend: build: ./frontend volumes: - .:/app healthcheck: test: [“CMD”, “curl”, “--fail”, 'http://localhost:4200'] interval: 10s timeout: 5s retries: 3 ports: - "4200:4200" nginx: build: ./nginx healthcheck: test: [“CMD”, “curl”, “--fail”, 'http://localhost'] interval: 10s timeout: 5s retries: 3 ports: - "80:80" links: - frontend volumes: db-data: 

这是我的angular度Dockerfile:

 FROM node:8.6 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app RUN npm install # Here starts angular cli workaround USER node RUN mkdir /home/node/.npm-global ENV PATH=/home/node/.npm-global/bin:$PATH ENV NPM_CONFIG_PREFIX=/home/node/.npm-global RUN npm install -g @angular/cli # Here ends COPY . /usr/src/app CMD ["npm", "start"] 

现在,这是一个问题:每当我改变我的angular码代码泊坞窗图像angular度不会重新加载更改。 我不知道我在做什么错。

这个问题与文件系统在Docker中的工作方式有关。 要解决这个问题,我build议你要么执行热重新加载(你已经在docker-compose.yml中添加了EXPOSE 49153和端口- '49153:49153'

还有其他的解决scheme,如inotify或nodemon,但他们要求您启动应用程序时使用–poll选项。 问题是,他们继续轮询fs的变化,如果应用程序是大的,你的机器会比你想要的慢很多。


我想我find了这个问题。 您将./app复制到/usr/src/app但是您将./app设置为一个卷。 所以这意味着如果你进入你的docker实例,你会在两个地方find你的应用程序: /app/usr/src/app

要解决这个问题,你应该有这样的映射: .:/usr/src/app

顺便说一句,你要使用主机的node_modules ,这可能会产生一些问题。 为了避免这种情况,您可以添加一个空卷映射: /usr/src/app/node_modules


如果进入正在运行的容器,则会发现文件夹app存在两次。 你可以尝试一下,执行:

 docker exec -it $instanceName /bin/sh ls /app ls /usr/src/app 

问题是只有在你的编码过程中/app的内容发生了变化,而你的应用程序正在执行/usr/src/app的内容,它们总是保持不变。

你在docker-compose中的frontend应该是这样的:

 frontend: build: ./frontend volumes: - .:/usr/src/app - /usr/src/app/node_modules