Том Dockerfile: локальные изменения не отражаются в докере

Я использую docker-compose для создания среды с несколькими контейнерами, в которой у меня есть один экземпляр 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

[Мое понимание до сих пор: вы можете видеть, что есть два экземпляра формы и уведомления, к одному из которых добавлено имя папки проекта. Таким образом, докер может искать изменения в другом файле. Я не уверена.]


person SouvikMaji    schedule 16.04.2017    source источник
comment
Что вы имеете в виду под «я меняю свои файлы локально»? Какой файл вы меняете?   -  person King Chung Huang    schedule 23.04.2017


Ответы (1)


Если вы пытаетесь смонтировать каталог хоста в файле 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 в нижней части файла docker-compose, docker создает специальный внутренний каталог, предназначенный для совместного использования между образами docker. Подробнее: https://docs.docker.com/engine/tutorials/dockervolumes/#add-a-data-volume

person LessQuesar    schedule 23.04.2017