том docker-compose не синхронизирован - PullRequest
0 голосов
/ 07 июня 2019

ПРОБЛЕМА

Я использую docker-compose для разработки с Python / Flask.Я хочу, чтобы моя кодовая база хоста синхронизировалась с одним внутренним док-контейнером, но не ...

СИТУАЦИЯ

Моя рабочая структура каталогов ниже:

.
├── Dockerfile
├── docker-compose.yml
├── app.py
└── requirements.txt

Я сделал bind mountиз текущего каталога хоста в контейнер /app.

Dockerfile:

FROM python:3.7.3-alpine3.9

WORKDIR /app

COPY requirements.txt requirements.txt

RUN pip install --upgrade pip && \
  pip install -r requirements.txt

COPY . .

CMD gunicorn -b 0.0.0.0:9000 -w 4 app:app

docker-compose.yml:

version: '3'
services:
  web:
    build: .
    ports:
      - "4649:9000"
    volumes:
      - .:/app

Когда я получаю доступ к http://localhost:4649, я могусмотрите правильный ответ, чтобы контейнер Docker работал хорошо.Однако ответ не обновляется, когда я изменяю app.py.

Я проверил контейнер, и результат ниже

"Mounts": [
            {
                "Type": "bind",
                "Source": "/Users/emp-mac-zakiooo/dev/jinja-pwa",
                "Destination": "/app",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

Это выглядит очень правильно, поэтому я понятия не имею об этой проблеме ?

Ответы [ 2 ]

1 голос
/ 07 июня 2019

OMG Я обнаружил, что мои файлы правильно синхронизированы, но Gunicorn кэшировал их, поэтому добавил --reload к CMD в Dockerfile, и, наконец, все исправлено.Спасибо за помощь и тааак извините за мою глупость ...!

0 голосов
/ 07 июня 2019

Этого можно достичь, выполнив следующие действия:

volumes:
    mount:
        driver: local
        driver_opts:
          type: nfs
          o: addr=host.docker.internal,rw,nolock,hard,nfsvers=3
          device: ":${PWD}/path"

В своей декларации объема в службе вы можете сделать следующее:

version: '3'
services:
  web:
    build: .
    ports:
      - "4649:9000"
    volumes:
      - mount:/app

Добавьте следующее в / etc / exports, чтобы разрешить доступ docker к вашим томам nfs. <path to $WORKSPACE> 127.0.0.1 -alldirs -mapall=0:80 как только он появится, вам нужно запустить sudo nfsd restart, чтобы включить ваши изменения.

если docker-compose перестает отвечать при использовании NFS, перезапуск docker обычно исправляет это

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...