分层构建意在减少容器的容量,分享一下心得,示例如下
#image for
FROM centos:latest as build
ADD Python-3.7.7.tgz /opt/
ENV PATH /usr/local/python3/bin:$PATH
RUN mkdir -p /usr/local/python3 && \
yum -y install gcc automake autoconf libtool make zlib-devel bzip2 bzip2-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel git cmake ncurses-devel &> /dev/null && yum clean all
RUN cd /opt/Python-3.7.7 && \
chmod +x configure && \
./configure prefix=/usr/local/python3 --with-ssl &> /dev/null && \
make -j 8 &> /dev/null && \
make altinstall &> /dev/null
FROM centos:latest
COPY --from=build /usr/local/python3 /usr/local/python3
ADD sds_tool.tgz /opt
ENV PATH /usr/local/python3/bin:$PATH
ENV STATICE_LICENSE_PATH /root/license.lic
RUN ln -s /usr/local/python3/bin/python3.7 /usr/local/bin/python && \
ln -s /usr/local/python3/bin/pip3.7 /usr/local/bin/pip && \
pip install --upgrade pip &> /dev/null && \
以下可以放自己需要的东东
xxxxxx
主要有两个地方的改动
1.添加 &> /dev/null,不要把信息打印到控制台,调试的时候可以加,等调试完成以后加上重新build即可
2.根据实际情况拿到编译后的python就可以了,至于yum哪些可以忽略
FROM centos:latest as build
COPY --from=build /usr/local/python3 /usr/local/python3
也许有人会问为什么不适用python官网的镜像,或者为什么不急于apline此类的基础镜像,因为有些情况是乌龟的臀部;