我想基于一个已经安装了一些Python软件包的现有镜像创建Docker镜像。因此,我正在考虑在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
我想知道哪种方法被认为是更好的做法(例如,性能更高和/或导致图像更小)。
答案 0 :(得分:1)
我需要一种更快的方法并导致更小的图像尺寸
使用高山和多阶段构建。示例:
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
答案 1 :(得分:0)
这是一个复杂的问题,两种选择都有其优缺点。让我们根据以下方法扩展方法:计算资源,依赖链,用户友好等。
方法1:将包添加到requirements.txt
方法2:在部署的容器上使用pip进行操作
结论