将Python软件包安装到Docker映像的不同方法

问题描述 投票:0回答:2

我想基于现有的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

[我想知道哪种方法被认为是更好的做法(即,性能更高和/或导致图像更小)。

python docker pip package docker-image
2个回答
0
投票

方法1:在requests.txt中添加软件包

以这种方式包含软件包是更干净和有保证的方法。

    添加软件包后,您需要构建映像并重新启动容器,这会占用大量时间和处理资源。
  • 通过版本控制机制,它变得更加健壮。
  • 方法2:使用pip部署的容器上
  • 此方法更加简便。

      使用pip直接安装在已部署的容器上,将始终获得其依赖项来进行安装。
    • 由于版本不匹配或软件包本身与其他软件包冲突,这些依赖软件包有时可能与现有软件包冲突。
    • 有时您可能会忘记从工作容器中构建Docker映像。
  • 结论
  • 这两种方法之间的大小不会有太大变化。

      如果您尝试使用不同的程序包,则使用方法2,它将节省时间和资源。
    • 如果确定,您可以添加需求并开始工作。


    0
    投票
    我需要一种更快的方法并导致
    较小的图像尺寸

    使用高山和多阶段构建。示例:

    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

    © www.soinside.com 2019 - 2024. All rights reserved.