Message ID | 5d55cfc92761a84d7b10aae602b05c147b56f95e.1527977964.git.yann.morin.1998@free.fr |
---|---|
State | Changes Requested |
Headers | show |
Series | [1/4] support/docker: run apt-get update and apt-get install in two RUNs | expand |
Hello, On Sat, Jun 02, 2018 at 07:19 PM, Yann E. MORIN wrote: > In commit 7517aef4d (support/docker: limit the number of layers), > we reduced the number of layers by coalescing multiple RUN commands > into less commands. > > In doing so, we especially coalesced "apt-get update" with "apt-get > install". That is exactly what is recommended in the 'best practices': https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run "Always combine RUN apt-get update with apt-get install in the same RUN statement." But the 'gotchas' used to justify the recommendation don't apply in our case, as you describe below. > However, the distribution we used is a pinned version of stretch, so > we know that running apt-get update will always yield the same apt > database. > > If we split the two apt-get commands, then we can re-use any local > intermediate image when we need to update the list of packages to > install; this helps quite a bit when testing the docker files over > and over again, with just slight variants in the packages list. > > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> [I use docker only with the buildroot image, so my experience is limited, but for what it's worth] Reviewed-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Regards, Ricardo
diff --git a/support/docker/Dockerfile b/support/docker/Dockerfile index f01ac25f93..8c525f7cf1 100644 --- a/support/docker/Dockerfile +++ b/support/docker/Dockerfile @@ -20,8 +20,8 @@ COPY apt-sources.list /etc/apt/sources.list # The container has no package lists, so need to update first RUN dpkg --add-architecture i386 && \ - apt-get update -y && \ - apt-get install -y --no-install-recommends \ + apt-get update -y +RUN apt-get install -y --no-install-recommends \ build-essential cmake libc6:i386 g++-multilib \ bc ca-certificates file locales rsync \ cvs bzr git mercurial subversion wget \
In commit 7517aef4d (support/docker: limit the number of layers), we reduced the number of layers by coalescing multiple RUN commands into less commands. In doing so, we especially coalesced "apt-get update" with "apt-get install". However, the distribution we used is a pinned version of stretch, so we know that running apt-get update will always yield the same apt database. If we split the two apt-get commands, then we can re-use any local intermediate image when we need to update the list of packages to install; this helps quite a bit when testing the docker files over and over again, with just slight variants in the packages list. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Peter Korsgaard <peter@korsgaard.com> --- support/docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)