2017-04-16 21 views
0

我使用docker-compose來創建一個多容器環境,其中有一個mongodb實例和兩個python應用程序。我在本地更改文件時遇到問題,但docker-compose up未反映我在文件中所做的更改。我究竟做錯了什麼?Dockerfile卷:本地更改不反映在碼頭

我的項目結構:

. 
├── 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 

這裏是我的搬運工,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 

[我的理解至今:您可以看到有兩個表單和通知實例,其中一個具有項目文件夾名稱。所以碼頭工人可能會在不同的文件中尋找變化。我不確定。]

+0

你是什麼意思,「我正在改變我的文件在本地」?你在改變什麼文件? –

回答

2

如果您嘗試在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: 

當你在泊塢窗,撰寫文件的底部聲明VOLUME節點,泊塢窗意味着要泊塢窗圖像之間共享的特殊內部目錄。這裏有更多的細節:https://docs.docker.com/engine/tutorials/dockervolumes/#add-a-data-volume