一个相关的问题问:“为什么在Alpine Linux上Pandas构建缓慢?”:
为什么在Alpine Linux上安装Pandas会花费很多时间
我想知道如何解决这个问题(答案不多说),即如何缓存Alpine
构建以回收任意编译的python
模块以用于另一个Docker构建。
这样的预构建模块可以托管在私有仓库中。Dockerfile将如何获取此文件?
我对的解决方案特别感兴趣pandas
,但是将网络扩大会很好。
感谢您的所有帮助。
使用不同的“运行步骤”的单独命令,每个步骤都将尝试使用上一步的缓存,一旦更改了一行,则缓存链无效,并且随后的所有行均已执行,因此您希望保持缓慢的变化顶部的东西,而经常更改底部的东西。
例如,您的Dockerfile的内容可能具有:
FROM python:2.7-alpine
RUN apk add --update bash curl
RUN apk add gcc make linux-headers musl-dev openldap-dev libxml2-dev libxslt-dev libffi-dev pcre-dev
RUN apk add cython
RUN pip install pandas
#RUN install your package/library
在上面的示例中,您将看到类似于以下的输出行(请注意显示“使用缓存”的行):
Sending build context to Docker daemon 56.83kB
Step 1/11 : FROM python:2.7-alpine
---> b630f364abf4
Step 2/11 : RUN apk add --update bash curl
---> Using cache
---> a611e4bbdbae
Step 3/11 : RUN apk add gcc make linux-headers musl-dev openldap-dev libxml2-dev libxslt-dev libffi-dev pcre-dev
---> Using cache
---> 87e91533771d
Step 4/11 : RUN apk add cython
---> Using cache
---> 47e0fd345aa8
Step 5/11 : RUN pip install pandas
---> Running in c57947f606e5
每条“使用缓存”输出行均表示未执行紧接在其上方的行,而是从缓存层获取的结果。
第一次将执行所有操作,但是在随后的执行中将更快(假设主机上的所有其他操作均保持不变)。
现在,您可以“ docker push:”到您的私有(甚至公共)注册表,并使用以以下内容开头的Dockerfile启动其他构建:
FROM <BASE IMAGE with pandas>:<TAG>
上面称为“父/基础映像”和“构建器”范例,您可以在https://docs.docker.com/develop/develop-images/baseimages/中阅读更多内容
最近,您还可以拥有“多阶段构建”,其本质上是相同的,但是经过简化,因此您可以使用单个Dockerfile:https ://docs.docker.com/develop/develop-images/multistage-build /
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句