我将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"
}
],
看起来非常正确,所以我对这个问题一无所知?
答案 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
中,最后将其修复。
谢谢您的帮助,对不起我的愚蠢……!