2017-04-16 4 views
0

docker-compose를 사용하여 하나의 mongodb 인스턴스와 두 개의 python 응용 프로그램이있는 다중 컨테이너 환경을 만듭니다. 로컬로 파일을 변경할 때 문제가 발생하지만 docker-compose up은 내 파일에서 변경 한 내용을 반영하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?Dockerfile volume : 로컬 변경 사항이 docker에 반영되지 않았습니다.

내 프로젝트 구조 :

. 
├── 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 두 개의 애플 리케이션을위한 매우 유사하다. 하나는 아래와 같습니다 : 지금까지

local    form 
local    healthcarereminder_form 
local    healthcarereminder_notify 
local    notify 

[나의 이해 : 여기

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 내 출력 : 여기에
FROM python:2.7 
ADD . /notify 
WORKDIR /notify 
RUN pip install -r requirements.txt 

내 고정 표시기-compose.yml 파일입니다 당신은 양식의 두 인스턴스가 있음을 알 수 있으며 프로젝트 폴더 이름이 추가 된 인스턴스와 함께 알립니다. 따라서 도커는 다른 파일에서 변경 사항을 찾고있을 수 있습니다. 확실하지 않습니다.]

+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: 

처럼 취급, 고정 표시기 고정 표시기 이미지를 공유하기위한 것 특수 내부 디렉토리를 만든다. 자세한 내용은 다음과 같습니다. https://docs.docker.com/engine/tutorials/dockervolumes/#add-a-data-volume