在这个官方码头上userguide其中一个建议是最小化Dockerfile中的图层数量。最小化Dockerfile中的图层数量
我认为这是减少图像的总规模,却发现一些关于层的最大限制:Number of commands in Dockerfile
但它是非常有用的,因为划分缓存单独的命令。
例如,有一个Dockerfile这样的:
# https://hub.docker.com/_/php/
FROM php:5.5.23-fpm
RUN /scripts/base.sh \
&& /scripts/composer.sh \
&& /scripts/mbstring.sh \
&& /scripts/bcmath.sh \
&& /scripts/mcrypt.sh \
&& /scripts/sockets.sh \
&& /scripts/zip.sh \
&& /scripts/phpredis.sh \
&& /scripts/cleanup.sh
这是只有一层,所以一旦建成,它将缓存。但是如果我改变了phpredis的版本,每一步都会重新构建。
我可以将它们分成独立的RUN指令吗?你可以告诉我吗?
这并不能解决抽象问题。每个* .sh可以单独更新。 'cleanup.sh'不是例外。 – Aliance
你可以做几次RUN,恐怕没有更好的办法 – user2915097