docker compose卷未同步 问题
我使用docker compose进行Python/Flask开发。我希望我的主机代码库与docker容器内的代码库同步,但不 处境 我的工作目录结构如下:docker compose卷未同步 问题,docker,docker-compose,dockerfile,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.tx
.
├── 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"
}
],
它看起来非常正确,所以我不知道这个问题您可以通过执行以下操作来实现这一点:
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
在服务内的卷声明中,可以执行以下操作:
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卷的访问
127.0.0.1-alldirs-mapall=0:80
一旦出现,您需要运行sudo-nfsd-restart
以包含您的更改
如果docker compose在使用NFS时停止响应,则重启docker通常会修复此问题
我希望这有帮助 OMG我发现我的文件已正确同步,但gunicorn缓存了它们,因此在
Dockerfile
中添加了--reload
到CMD
,最后修复了它。
谢谢你的帮助,很抱歉我的愚蠢 对我来说,问题是
WORKDIR
和volumes
配置不匹配。其中一个显示为/usr/src/app
,另一个显示为/app
。一旦我确定了docker compose.yml
和Dockerfile
都列出了/usr/src/app
,它就开始将我的容器卷与我的Mac OS卷同步。谢谢