使用apt get build deps最小化Docker映像
有时在构建Docker映像时,需要使用使用apt get build deps最小化Docker映像,build,docker,apt-get,Build,Docker,Apt Get,有时在构建Docker映像时,需要使用apt-get。例如,用于运行Magento的映像可能会启动如下内容 FROM php:5.4-apache RUN apt-get -qqy update \ && apt-get -qqy install git \ libmcrypt-dev \ libpng12-dev \ libxm
apt-get
。例如,用于运行Magento的映像可能会启动如下内容
FROM php:5.4-apache
RUN apt-get -qqy update \
&& apt-get -qqy install git \
libmcrypt-dev \
libpng12-dev \
libxml2-dev \
libxslt-dev \
&& docker-php-ext-install bcmath \
gd \
mcrypt \
mysql \
soap \
xsl \
zip
但是现在我有了那些apt-get
命令带来的所有垃圾。更糟糕的是,我甚至不确定我可以删除什么,因为php库可能是动态链接的
我的思路是这样的
apt-get
功能我如何构建更小的Docker映像,而不完全牺牲在Dockerfile中使用
apt get
的易用性和可维护性?您可以通过运行rm-rf/var/lib/apt/lists/*
来摆脱一些东西
RUN apt-get update \
&& apt-get install -y MY_PACKAGE \
&& rm -rf /var/lib/apt/lists/*
请记住,您需要在与apt get update相同的行中运行此命令,才能使其生效。您在哪里寻找此方法 具体来说,您可以卸载同一层中不需要的包
ENV REDIS_VERSION 3.0.5
ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.0.5.tar.gz
ENV REDIS_DOWNLOAD_SHA1 ad3ee178c42bfcfd310c72bbddffbbe35db9b4a6
# for redis-sentinel see: http://redis.io/topics/sentinel
RUN buildDeps='gcc libc6-dev make' \
&& set -x \
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /usr/src/redis \
&& curl -sSL "$REDIS_DOWNLOAD_URL" -o redis.tar.gz \
&& echo "$REDIS_DOWNLOAD_SHA1 *redis.tar.gz" | sha1sum -c - \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& rm redis.tar.gz \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps