ANÚNCIO

~/questoes/devops

Qual é a função da instrução RUN no Dockerfile?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência #03 – Criando uma imagem e um container Docker para uma API em NodeJS | Thi code
Para fixar

A Instrução RUN no Dockerfile: Executando Comandos na Construção da Imagem

Conceito central

A instrução RUN executa comandos durante o processo de construção da imagem Docker, criando camadas (layers) que fazem parte da imagem final. Diferentemente de CMD e ENTRYPOINT, que rodam quando o container inicia, RUN funciona apenas na fase de build.

Por que essa resposta faz sentido

RUN é executada durante a construção da imagem, não quando o container começa a rodar. É usada para instalar dependências, criar diretórios e preparar o ambiente dentro da imagem. Cada RUN cria uma nova camada, por isso é bom combinar múltiplos comandos com && para otimizar.

Armadilhas comuns

  • Confundir RUN com CMD: RUN executa durante a construção, CMD executa quando o container inicia
  • Criar uma instrução RUN para cada comando em vez de combinar com &&, gerando imagens com muitas camadas e tamanho maior
  • Pensar que RUN executa algo interativamente que o usuário possa usar depois, quando na verdade é totalmente automática

Entenda as alternativas

A

Executa um comando durante a construção da imagem Docker. É nesse momento que você instala pacotes, copia arquivos e configura tudo que precisa estar pronto quando o container rodar.

B

Isso descreve o comportamento de CMD ou ENTRYPOINT, não de RUN. Esses comandos especificam o que rodar quando o container inicia, após a imagem já estar construída.

C

RUN não é interativo e não permite execução manual pelo usuário. Ela é uma instrução automática do Dockerfile que roda durante o build. Se quiser executar comandos manualmente, você usa docker exec depois.

D

RUN não define qual aplicação será executada no inicio. Essa função pertence ao ENTRYPOINT ou CMD. RUN só prepara o ambiente e instala o que é necessário.

Dica prática: Em um Dockerfile para Node.js, use RUN npm install para instalar dependências durante o build. Assim, quando o container iniciar com CMD node app.js, todas as dependências já estarão prontas. Combine comandos com && para economizar camadas: RUN apt-get update && apt-get install -y package-name.

Revise pensando: Se você quiser instalar as dependências do seu projeto Node.js dentro da imagem Docker, qual instrução do Dockerfile você usa: RUN, CMD ou ENTRYPOINT?