将Python软件包安装到Docker映像的不同方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Python软件包安装到Docker映像的不同方法相关的知识,希望对你有一定的参考价值。
我想基于现有的Docker映像创建一个已经安装了一些Python软件包的映像。因此,我正在考虑在Dockerfile中使用pip
将其他软件包安装到该映像。看来我可以单独安装它们,例如:
RUN pip install foo==1.2.*
RUN pip install bar==3.4.*
...
或将它们放入requirements.txt
并执行以下操作:
COPY requirements.txt /opt/app/requirements.txt
WORKDIR /opt/app
RUN pip install -r requirements.txt
[我想知道哪种方法被认为是更好的做法(即,性能更高和/或导致图像更小)。
方法1:在requests.txt中添加软件包
以这种方式包含软件包是更干净和有保证的方法。添加软件包后,您需要构建映像并重新启动容器,这会占用大量时间和处理资源。
此方法更加简便。使用pip直接安装在已部署的容器上,将始终获得其依赖项来进行安装。
这两种方法之间的大小不会有太大变化。如果您尝试使用不同的程序包,则使用方法2,它将节省时间和资源。
较小的图像尺寸
使用高山和多阶段构建。示例:
FROM python:3.7-alpine as base
FROM base as builder
RUN mkdir /install
WORKDIR /install
COPY requirements.txt /requirements.txt
RUN pip install --install-option="--prefix=/install" -r /requirements.txt
FROM base
COPY --from=builder /install /usr/local
COPY src /app
WORKDIR /app
CMD ["gunicorn", "-w 4", "main:app"]
来源:https://blog.realkinetic.com/building-minimal-docker-containers-for-python-applications-37d0272c52f3
以上是关于将Python软件包安装到Docker映像的不同方法的主要内容,如果未能解决你的问题,请参考以下文章
将字符串的 CLA 传递到 Docker 映像中 - Python