为什么有些docker文件会复制文件而不是将它们作为卷安装

问题描述 投票:0回答:1

有人可以向我解释为什么有些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-compose docker-volume
1个回答
1
投票

卷用于管理Docker容器存储的文件。它允许Docker容器写入文件系统上的特定位置。如果你想要的只是执行一段代码,最好将它复制到Docker容器中,这样它就没有对主机文件系统的写访问权。

编辑:我实际上不知道为什么他们在docker compose setup中指定音量。 build: .指定它应该在当前目录中使用Dockerfile,该目录已包含copy语句。这似乎有点无意义。可能是教程中的错误。

© www.soinside.com 2019 - 2024. All rights reserved.