Dockerfile卷:本地更改不反映在docker

我正在使用docker-compose创build一个多容器环境,其中有一个mongodb实例和两个python应用程序。 当我在本地更改我的文件时遇到问题,但是docker-compose up并不反映我在文件中所做的更改。 我究竟做错了什么?

我的项目结构:

 . ├── docker-compose.yml ├── form │  ├── app.py │  ├── Dockerfile │  ├── requirements.txt │  ├── static │  └── templates │  ├── form_action.html │  └── form_sumbit.html ├── notify │  ├── app.py │  ├── Dockerfile │  ├── requirements.txt └── README 

Dockerfiles对于两个应用程序来说非常相似。 一个给出如下:

 FROM python:2.7 ADD . /notify WORKDIR /notify RUN pip install -r requirements.txt 

这是我的docker-compose.yml文件:

 version: '3' services: db: image: mongo:3.0.2 container_name: mongo networks: db_net: ipv4_address: 172.16.1.1 web: build: form command: python -u app.py ports: - "5000:5000" volumes: - form:/form environment: MONGODB_HOST: 172.16.1.1 networks: db_net: ipv4_address: 172.16.1.2 notification: build: notify command: python -u app.py volumes: - notify:/notify environment: MONGODB_HOST: 172.16.1.1 networks: db_net: ipv4_address: 172.16.1.3 networks: db_net: external: true volumes: form: notify: 

这是我的docker volume ps输出:

 local form local healthcarereminder_form local healthcarereminder_notify local notify 

[我的理解到现在:你可以看到有两个表单和通知的实例,其中一个具有项目文件夹名称追加。 所以docker工人可能会在不同的文件中寻找变化。 我不确定。]

如果您正在尝试在docker-compose文件中安装主机目录,请不要将notify声明为VOLUME指令。

反而把它当作本地文件夹

 notification: build: notify command: python -u app.py volumes: # this points to a relative ./notify directory. - ./notify:/notify environment: .... volumes: form: #do not declare the volume here. # notify: 

当您在docker-compose文件的底部声明了VOLUME节点时,docker会创build一个特殊的内部目录,以便在Docker镜像之间共享。 这里是更多的细节: https : //docs.docker.com/engine/tutorials/dockervolumes/#add-a-data-volume