Sanidade nas camadas
- Sanidade nas camadas
Lembre-se de que a ordem nas instruções do Dockerfile é muito importante.
Como RUN, COPY, ADD e outras instruções criarão uma nova camada de contêiner, o agrupamento de vários comandos reduzirá o número de camadas.
Por exemplo, em vez de:
FROM ubuntu
RUN apt-get install -y wget
RUN wget https://…/downloadedfile.tar
RUN tar xvzf downloadedfile.tar
RUN rm downloadedfile.tar
RUN apt-get remove wget
Linguagem de código:JavaScript(javascript)
Seria uma prática recomendada do Dockerfile:
FROM ubuntu
RUN apt-get install wget && wget https://…/downloadedfile.tar && tar xvzf downloadedfile.tar && rm downloadedfile.tar && apt-get remove wget
Linguagem de código:JavaScript(javascript)
Além disso, coloque os comandos com menor probabilidade de alteração e mais fácil de armazenar em cache primeiro.
Em vez de:
FROM ubuntu
COPY source/* .
RUN apt-get install nodejs
ENTRYPOINT ["/usr/bin/node", "/main.js"]
Linguagem de código:JavaScript(javascript)
Seria melhor fazer:
FROM ubuntu
RUN apt-get install nodejs
COPY source/* .
ENTRYPOINT ["/usr/bin/node", "/main.js"]Linguagem de código:JavaScript(javascript)
O nodejs é menos provável que o pacote mude do que a nossa fonte de aplicativos.
Lembre-se de que executar um rm O comando remove o arquivo na próxima camada, mas ele ainda está disponível e pode ser acessado, pois o sistema de arquivos de imagem final é composto de todas as camadas anteriores.
Então não copie arquivos confidenciais e remova-os, eles não estarão visíveis no sistema de arquivos final do contêiner, mas ainda serão facilmente acessíveis.