Importância da Ordem das Instruções no Dockerfile


Resumo

Ao escrever um Dockerfile, é importante considerar a ordem das instruções para otimizar o processo de construção da imagem e aproveitar ao máximo o cache do Docker. Isso pode significar uma grande diferença no tempo necessário para construir e reconstruir suas imagens Docker.

Quando se trabalha com Dockerfile, a ordem das instruções é crucial, pois afeta o desempenho do processo de construção da imagem Docker e a eficiência do cache. Um exemplo claro disso é a utilização de comandos RUN e FROM.

Ao realizar a comparação entre dois Dockerfiles, percebe-se como a ordem das instruções pode impactar significativamente o cache de camadas do Docker e, consequentemente, o tempo de construção da imagem.

Exemplo

Considere os seguintes Dockerfiles:

FROM ubuntu
 
RUN apt-get update
RUN apt-get install curl -y && \
    apt-get install vim -y
FROM ubuntu
 
RUN apt-get install curl -y && \
    apt-get install vim -y
RUN apt-get update

No primeiro Dockerfile, primeiro é executado o comando apt-get update e, em seguida, a instalação do curl e vim. No segundo Dockerfile, a ordem é invertida: primeiro a instalação do curl e vim, e depois o apt-get update.

Observações

Ao criar imagens a partir desses Dockerfiles (docker build), o Docker não utilizará o cache da camada RUN apt-get update no segundo Dockerfile, pois a ordem das camadas foi alterada. Isso ocorre mesmo que os comandos sejam idênticos em ambos os Dockerfiles.

Referências