Otimizações a nível de aplicação


Para otimizar o tamanho das imagens Docker a nível de aplicação, é crucial identificar e remover qualquer componente ou dependência que não seja essencial para a execução da aplicação em produção. Isso pode ser alcançado por meio de várias práticas, como a utilização de comandos específicos durante o processo de construção da imagem.

Um exemplo claro disso é o uso de comandos como workspaces focus --production ou npm-ci --production para instalar apenas as dependências necessárias para a execução da aplicação em produção, excluindo assim as dependências de desenvolvimento que não são relevantes para o ambiente de produção. Essa abordagem reduz significativamente o número de pacotes e bibliotecas incluídos na imagem, resultando em uma imagem mais leve e eficiente.

Além disso, é importante considerar a organização dos estágios de construção da imagem. Em alguns casos, pode ser necessário criar estágios separados para diferentes partes do processo de construção, como configuração, compilação e produção. Isso permite otimizar cada estágio individualmente e reduzir o tamanho final da imagem.

Outra prática importante é limpar os artefatos temporários e caches gerados durante o processo de construção. Isso pode ser feito por meio de comandos como yarn cache clean ou npm clean, que removem arquivos desnecessários e reduzem ainda mais o tamanho da imagem final.

FROM node:18-alpine3.19 AS build
 
WORKDIR /usr/src/app
 
COPY package.json yarn.lock .yarnrc.yml ./
COPY .yarn ./.yarn
 
RUN yarn
 
COPY . .
 
RUN yarn run build
RUN yarn workspaces focus --production && yarn cache clean
 
FROM node:18-alpine3.19
 
COPY --from=build /usr/src/app/package.json ./package.json
COPY --from=build /usr/src/app/dist ./dist
COPY --from=build /usr/src/app/node_modules ./node_modules
 
EXPOSE 3000
 
CMD ["yarn", "run", "start:production"]

Nota

É importante ressaltar que a otimização do tamanho das imagens Docker não se resume apenas ao processo de construção da imagem, mas também envolve a escolha cuidadosa das bibliotecas e frameworks utilizados na aplicação. Optar por bibliotecas mais leves e eficientes pode ajudar a reduzir o tamanho da imagem e melhorar o desempenho da aplicação como um todo.

Em resumo, otimizar o tamanho das imagens Docker a nível de aplicação requer uma abordagem cuidadosa e estratégica, que envolve identificar e remover qualquer componente ou dependência desnecessária, organizar os estágios de construção da imagem de forma eficiente e escolher bibliotecas e frameworks leves e eficientes. Ao seguir estas práticas, é possível criar imagens Docker mais leves, eficientes e fáceis de gerenciar.

Referências