有人可以向我解释为什么某些Dockerfiles具有复制文件的步骤,而不是仅仅将文件挂载到卷上的原因。
我一直在寻找使用Docker的Django项目的设置,并且dockerfile中包含使用复制命令的步骤:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
在我使用过的其他Dockerfile文件中(homeassant),我刚刚将目录挂载为卷,并且该目录可以正常工作。这是怎么回事?
我不能只将代码和需求保存在同一文件夹中并挂载它们吗?
只是无法理解
编辑:
作为参考,我正在研究Docker site tutorial for Django,它将根目录挂载为/ code
version: '3'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
如果我们无论如何都将文件复制到/code
上,为什么该卷已装入。也许那是让我失望的原因?
答案 0 :(得分:1)
卷用于管理Docker容器存储的文件。它允许Docker容器写入文件系统上的特定位置。如果您只想执行一段代码,最好将其复制到Docker容器中,以使其对主机的文件系统没有写权限。
编辑:
我实际上不知道他们为什么在docker compose设置中指定卷。 build: .
指定它应在当前目录中使用Dockerfile
,该目录已包含复制语句。似乎没有意义。在本教程中可能是一个错误。