【问题标题】:How to prevent Docker from re-running pip installs every time I modify code [duplicate]每次我修改代码时如何防止Docker重新运行pip安装[重复]
【发布时间】:2017-05-10 09:24:39
【问题描述】:

我有一个带有以下Dockerfile的刮刀:

# Adapted from trcook/docker-scrapy
FROM python:alpine
RUN apk --update add libxml2-dev libxslt-dev libffi-dev gcc musl-dev libgcc openssl-dev
COPY . /scraper
RUN pip install -r /scraper/requirements.txt
WORKDIR /scraper/apkmirror_scraper
CMD ["scrapy", "crawl", "apkmirror"]

刮板代码在/scraper/apkmirror_scraper,需求在scraper/requirements.txt。我注意到每次我修改代码和构建镜像时,它都会重新运行pip install -r requirements.txt,而不是使用本地缓存。

如何防止这种情况并使其使用本地缓存?

(关于此的一个“理论”是,虽然/scraper/requirements.txt 本身没有改变,但/scraper 目录已经改变,这使得RUN 指令必须“重新运行”;在这种情况下它可能会有所帮助将requirements.txt 移动到不同的目录。但是,我无法从https://docs.docker.com/engine/reference/builder/#run 验证这个“理论”是否正确)。

【问题讨论】:

    标签: docker pip dockerfile


    【解决方案1】:

    Docker how to run pip requirements.txt only if there was a change? 这个问题似乎与我的情况有关。每次我修改代码时,都会使 Docker 构建缓存失效,即使 requirements.txt 没有改变。所以为了避免每次都重新运行pip installs,建议COPYrequirements.txtRUN pip install -r requirements.txt在一个单独的步骤中。

    【讨论】:

    • 没有帮助。如果我在 requirements.txt 中添加一个新库,它仍在运行 pip install。我希望它只安装新库。
    猜你喜欢
    • 2017-09-19
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2022-12-14
    • 2017-10-28
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    相关资源
    最近更新 更多