我正在docker中玩django项目,实际情况与我的有限理解相矛盾:
更改文件tests.py并运行后
docker exec {my_container} python manage.py test
它知道我所做的这些本地更改(例如,我可以编写新的测试,它将运行)。
但是我认为Docker容器是隔离的,我需要重新创建或至少将更新的文件复制到一个容器中,以更新文件的状态。
我阅读了docker exec doc,但找不到有关其更新容器中文件能力的信息。
那么,我需要知道些什么才能了解正在发生的事情?
Dockerfile的内容:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install -r requirements.txt
docker-compose.yml:
version: '3'
services:
ankete_db:
image: postgres
ports:
- "54320:5432"
container_name: ankete_db
ankete:
build: .
container_name: ankete
command: gunicorn -b 0.0.0.0:8000 ankete.wsgi
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- ankete_db
答案 0 :(得分:1)
volumes执行此操作。删除volumes
后,您的更改将不会反映在容器中。
答案 1 :(得分:1)
exec命令不会在主机和容器之间更新文件。导致文件在容器和主机之间同步的原因是组成文件中声明的卷。
卷声明将目录.
安装到容器内的/code
上,以便对主机当前目录内的任何文件所做的任何更改都反映在容器内的/code
目录中反之亦然。