Docker Caching: Otimizando Seus Builds
Publicado em 20/01/2022
Post bem simples e objetivo para começar bem o ano novo e sem a dor de cabeça do CI & CD toda vez ter que instalar as dependências da sua aplicação a cada deploy.
Se seu Dockerfile se parece com algo desse tipo:
FROM node:8
COPY . /app
RUN npm install --production
EXPOSE 3000
CMD ["node", "app/index.js"]
Altere para:
FROM node:8
COPY package.json /app/package.json
RUN cd /app; npm install --production
COPY . /app
EXPOSE 3000
CMD ["node", "app/index.js"]
A diferença está aqui:
De
COPY . /app
RUN npm install --production
Para
COPY package.json /app/package.json
RUN cd /app; npm install --production
COPY . /app
O comando acima fará com que as dependências da sua aplicação sejam armazenadas e versionadas. O Docker verificará se houve alguma nova alteração no package.json. Caso não ocorra nenhuma alteração, o build acontece normalmente sem a necessidade de instalar novamente as dependências fazendo com que o deploy seja natualmente mais rápido.