docker-compose卷未同步

时间:2019-06-07 18:03:10

标签: docker docker-compose dockerfile

问题

我将docker-compose用于Python / Flask开发。我希望我的主机代码库与docker容器中的一个同步,但不...

情况

我的工作目录结构如下:

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

我将绑定从主机的当前目录装载到容器的/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 个答案:

答案 0 :(得分:0)

您可以通过执行以下操作来实现:

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来包含您的更改。

如果使用NFS时docker-compose停止响应,重新启动docker通常即可解决

我希望这会有所帮助!

答案 1 :(得分:0)

OMG,我发现我的文件已正确同步,但gunicorn对其进行了缓存,因此将--reload添加到CMD中的Dockerfile中,最后将其修复。 谢谢您的帮助,对不起我的愚蠢……!