gpt4 book ai didi

python - 是否需要在Dockerfile中复制.tar.gz?

转载 作者:行者123 更新时间:2023-12-02 19:15:47 25 4
gpt4 key购买 nike

此处是Docker新手,有关在Docker化Django时有关COPY命令的快速问题。
我认为COPY命令用于将本地文件复制到Docker容器/上下文中,或者就Docker而言,在构建过程中该文件不存在。
我关注的教程中的开发Dockerfile包含以下部分:

# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
因此,我了解到,如果在构建期间没有该COPY命令,则第二个RUN命令将失败,因为它不知道什么是requirements.txt。因此,由于我想安装django-polls应用程序tarball,因此我添加了一个COPY并将该短语添加到第二个RUN:
# 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行,并将.tar.gz安装附加到RUN命令的末尾。因此,我有两个问题,第二个是本文的重点:
  • 是否有必要将pip install --upgrade pip移动到最终的RUN命令中?我知道两个不同的RUN命令不会相互影响,因此,最初的第一个RUN没有任何作用。
  • 是否需要添加第二个COPY命令?我问是因为我以为是,但是后来我意识到我在生产的Dockerfile中省略了它,但它仍然能够安装django-polls。

  • 也就是说,我的生产Dockerfile具有以下几行:
    # 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
    即使没有 COPY ./django-polls-0.1.tar.gz .行,它也能够安装django-polls。我在这里不明白什么?
    谢谢

    最佳答案

    Was it necessary to move the pip install --upgrade pip into the final RUN command? I understand that two different RUN commands do not affect each other, therefore the original, first RUN was doing nothing.


    并不一定要工作,但这是一种最佳实践,因为您在Dockerfile中添加的每个RUN命令都会为生成的Docker Image添加新的Layer。因此,如果可能的话,您将无法从缓存中受益(在构建过程中缓存了Yaer),则应将其组合为一个RUN命令。

    Was it necessary to add the second COPY command? I ask because I thought it was, but then I realize I omitted it in my production Dockerfile and it was still able to install django-polls.


    对于 COPY命令,您完全了解它是如何工作的。是的,这应该是必要的。

    And even without a COPY ./django-polls-0.1.tar.gz . line, it was able to install django-polls. What am I not understanding here?


    从此处列出的内容来看,这是行不通的。起作用的唯一原因可能是因为该文件是在上一步中以某种方式添加/安装的,我无法确定,因为您没有在此处列出完整的Dockerfile。
    最好的问候Shogoki

    关于python - 是否需要在Dockerfile中复制.tar.gz?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63501811/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com