我想在容器中安装一些pip
的软件包。执行此操作的简单方法如下:
FROM ubuntu:trusty
RUN apt-get update && \
apt-get install python-pip <lots-of-dependencies-needed-only-for-pip-install>
RUN pip install <some-packages>
然而,这种方式我安装了许多不需要的依赖项,这会不必要地增加容器的大小。
我的第一个想法是这样做:
FROM ubuntu:trusty AS pip_install
RUN apt-get update && \
apt-get install python-pip <lots-of-dependencies-needed-only-for-pip-install>
RUN pip install <some-packages>
FROM ubuntu:trusty
RUN apt-get update && \
apt-get install python-pip <runtime-dependencies>
COPY --from=pip_install /usr/local/bin /usr/local/bin
COPY --from=pip_install /usr/local/lib/python2.7 /usr/local/lib/python2.7
这有效,但感觉就像一个解决方法。有没有更优雅的方式这样做?我想到了这样的事情:
FROM ubuntu:trusty AS pip_install
RUN apt-get update && \
apt-get install python-pip <lots-of-dependencies-needed-only-for-pip-install>
RUN pip install <some-packages>
VOLUME /usr/local
FROM ubuntu:trusty
<somehow mount /usr/local from pip_install to /tmp/pip>
RUN apt-get update && \
apt-get install python-pip <runtime-dependencies>
RUN pip install <from /tmp/pip> <some-packages>
这甚至可能吗?
我可以使用一些python
图像,但在我的实际应用中,我派生自另一个图像,它本身来自ubuntu:trusty
。至于这个问题,它就是重点。