我正在寻找一种使用 python 和 Dockerfile 创建多阶段构建的方法:
例如,使用以下图像:
第一张图片:安装所有编译时要求,并安装所有需要的 python 模块
第二张图片:将所有已编译/构建的包从第一个映像复制到第二个映像,而不使用编译器本身(gcc、postgers-dev、python-dev 等..)
最终目标是拥有一个更小的图像,运行 python 和我需要的 python 包。
简而言之:我怎样才能“包装”所有已编译的模块在第一个映像中创建的(站点包/外部库),以及以“干净”的方式复制它们,到第二张图片。
好的,我的解决方案是使用wheel,它允许我们在第一个映像上进行编译,为所有依赖项创建wheel文件并将它们安装在第二个映像中,而无需安装编译器
FROM python:2.7-alpine as base
RUN mkdir /svc
COPY . /svc
WORKDIR /svc
RUN apk add --update \
postgresql-dev \
gcc \
musl-dev \
linux-headers
RUN pip install wheel && pip wheel . --wheel-dir=/svc/wheels
FROM python:2.7-alpine
COPY --from=base /svc /svc
WORKDIR /svc
RUN pip install --no-index --find-links=/svc/wheels -r requirements.txt
您可以在以下博客文章中看到我对此的回答
https://www.blogfoobar.com/post/2018/02/10/python-and-docker-multistage-build https://www.blogfoobar.com/post/2018/02/10/python-and-docker-multistage-build
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)