作者:奋肀斗小族 | 来源:互联网 | 2022-12-30 11:34
我正在寻找一种使用python和Dockerfile创建多级构建的方法
即我正在尝试做的是使用几个图像创建一个Dockerfile:
第1张图片:安装所有编译时要求,并安装所有需要的python模块
第二个图像:将所有编译/构建的包从第一个图像复制到第二个图像,没有编译器本身(gcc,postgers-dev,python-dev等...)
最终的objcetive是一个较小的图像,运行python
所以问题是 - 如何'包装'在第一张图像中创建的所有已编译模块(site-packages/external libs),并以"干净"的方式将它们复制到第二张图像
1> gCoh..:
好吧所以我的解决方案是使用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://galnevis.wixsite.com/website/single-post/2018/02/10/Python-and-Docker-multistage-build