有人可以向我解释为什么有些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/
在我使用的其他Dockerfiles(homeassistant)中,我刚刚将一个目录作为卷安装,并且它已经工作了。这里发生了什么?
我不能只将代码和要求保存在同一个文件夹中并挂载它们吗?
只是无法理解它
编辑:
作为参考,我正在查看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
。也许这就是让我失望的原因?
卷用于管理Docker容器存储的文件。它允许Docker容器写入文件系统上的特定位置。如果你想要的只是执行一段代码,最好将它复制到Docker容器中,这样它就没有对主机文件系统的写访问权。
编辑:我实际上不知道为什么他们在docker compose setup中指定音量。 build: .
指定它应该在当前目录中使用Dockerfile
,该目录已包含copy语句。这似乎有点无意义。可能是教程中的错误。