Python dockfile中是否需要COPY.tar.gz?
Docker新手在这里,快速询问Docker Django时的COPY命令 我认为COPY命令用于将本地文件复制到Docker容器/上下文中,或者,就Docker而言,在构建过程中,该文件不存在 以下教程中的开发Dockerfile包含以下部分:Python dockfile中是否需要COPY.tar.gz?,python,django,docker,pip,Python,Django,Docker,Pip,Docker新手在这里,快速询问Docker Django时的COPY命令 我认为COPY命令用于将本地文件复制到Docker容器/上下文中,或者,就Docker而言,在构建过程中,该文件不存在 以下教程中的开发Dockerfile包含以下部分: # install dependencies RUN pip install --upgrade pip COPY ./requirements.txt . RUN pip install -r requirements.txt 所以我知道,如果在构
# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
所以我知道,如果在构建过程中没有COPY命令,第二次运行命令将失败,因为它不知道requirements.txt是什么。因此,由于我想安装django polls应用程序tarball,我添加了一个副本,并在第二次运行时添加了一个短语:
# install dependencies
COPY ./requirements.txt .
COPY ./django-polls-0.1.tar.gz .
RUN pip install --upgrade pip && pip install -r requirements.txt && pip install django-polls-0.1.tar.gz
如您所见,我组合了两个RUN命令,添加了COPY.tar.gz行,并在RUN命令的末尾添加了.tar.gz安装。因此,我有两个问题,第二个问题是本文的重点:
pip安装--upgrade pip
移动到最终运行命令中?我知道两个不同的RUN命令不会相互影响,因此最初的第一个RUN没有做任何事情
# install dependencies
COPY ./requirements.txt .
RUN pip install --upgrade pip && pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/app/wheels -r requirements.txt && pip install django-polls-0.1.tar.gz
即使没有拷贝。/django-polls-0.1.tar.gz.
行,它也能够安装django-polls。我在这里不明白什么
谢谢
是否有必要将pip安装-升级pip移到最终运行命令中?我知道两个不同的RUN命令不会相互影响,因此最初的第一个RUN没有做任何事情
这并不是真的需要工作,但它在某种程度上是一种最佳实践,因为您在Docker文件中添加的每个RUN命令都会向生成的Docker图像添加一个新层。因此,如果可能的话,并且您没有从缓存中获益(yayers在构建过程中被缓存),您应该将其合并到一个RUN命令中
是否需要添加第二个复制命令?我这样问是因为我认为是这样,但后来我意识到我在生产Dockerfile中遗漏了它,它仍然能够安装django轮询
对于COPY
命令,您完全理解它的工作原理。所以这是必要的
即使没有副本。/django-polls-0.1.tar.gz。它能够安装django民意测验。我在这里不明白什么
从您在此处列出的内容来看,这无法工作。之所以这样做,唯一的原因可能是因为该文件是在前一步中添加/安装的,我无法确定,因为您没有在此处列出完整的Dockerfile
向Shogoki致意谢谢你的回复。是的,看起来Docker正在缓存一些东西,但仍然不确定教程为什么要在自己的运行中运行pip升级。感谢您确认复制功能。你认为以前的
副本代码>行可能正在复制tar.gz以及其他所有内容?如果requirements.txt
文件发生更改,则在COPY
命令之前的RUN
命令将不会重复。但是如果有副本代码>行,它实际上复制了整个目录,您不需要单独复制单个文件。