Python 使用枕头numpy scipy PyBrain创建苗条的Docker图像
我正在尝试创建具有Python 使用枕头numpy scipy PyBrain创建苗条的Docker图像,python,docker,Python,Docker,我正在尝试创建具有依赖项的gunicorn枕头numpy scipy PyBrain苗条图像。但是,无论我做什么,我的图像大小都会超过500 MB。是否有任何技巧可以减小docker图像的大小 FROM python:2.7-alpine RUN echo "http://dl-4.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories RUN apk --update add --no-cache \
依赖项的gunicorn枕头numpy scipy PyBrain
苗条图像。但是,无论我做什么,我的图像大小都会超过500 MB。是否有任何技巧可以减小docker图像的大小
FROM python:2.7-alpine
RUN echo "http://dl-4.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk --update add --no-cache \
lapack-dev \
gcc \
freetype-dev
RUN apk add --no-cache --virtual .build-deps \
gfortran \
musl-dev \
g++ \
jpeg-dev \
zlib-dev
RUN apk add --update tini
COPY requirements.txt /app/
COPY app/ /app/
WORKDIR /app
RUN pip install numpy==1.13.3
RUN pip install -r requirements.txt
RUN apk del .build-deps
EXPOSE 8080
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["gunicorn", "-w 3", "-b :8080", "app:app"]
需要在相同的
RUN
命令中删除构建依赖项,以避免它们存储到自己的层中。例如:
COPY requirements.txt /app/
RUN apk add --no-cache --virtual .build-deps \
gfortran \
musl-dev \
g++ \
jpeg-dev \
zlib-dev \
&& pip install -r requirements.txt \
&& apk del .build-deps
请注意,每次更新需求时,这将导致额外的构建时间,因为
apk
命令也将被执行。如果您的应用程序不能接受这一点,那么只需删除RUN apk del.build deps
步骤,因为这不会减少图像大小,但会增加图像大小,因为添加/删除包发生在不同的图像层中。我相信这是python docker图像的常见问题。仅您的pip需求就需要292Mb
I在virtualenv中测量。您的起始docker映像python:2.7-alpine
是25Mb
。测量apk add包的大小是228MB
。