RUN
A instrução RUN
em um Dockerfile é usada para executar comandos no contêiner durante a construção da imagem. Esses comandos são executados em uma nova camada sobre a imagem base definida pela instrução FROM
, e o resultado é mantido na imagem resultante.
Sintaxe Básica
Existem duas formas principais de utilizar a instrução RUN
:
Shell Form: Executa o comando no shell padrão do sistema, geralmente
/bin/sh -c
no Linux.Exec Form: Especifica o comando e seus argumentos como uma lista, sendo executado diretamente sem invocar um shell.
Exemplos de Uso
Instalação de Pacotes
Neste exemplo, o comando apt-get
é usado para atualizar os pacotes e instalar o curl
, vim
, e git
no sistema. O -y
responde "sim" automaticamente a todos os prompts durante a instalação.
Limpeza de Pacotes Intermediários
Para minimizar o tamanho da imagem Docker, é comum limpar caches de pacotes após a instalação:
Neste exemplo, após instalar os pacotes, o cache do apt
é limpo e os arquivos temporários são removidos para reduzir o tamanho da imagem.
Execução de Comandos de Build
Aqui, um projeto Node.js é configurado. O comando npm install
instala as dependências e npm run build
cria o projeto.
Considerações Importantes
Camadas: Cada comando
RUN
cria uma nova camada na imagem Docker. Para otimizar a imagem, combine comandos que possam ser executados juntos.Cache: O Docker usa um cache para comandos
RUN
. Se nada no Dockerfile mudar antes da linhaRUN
, o Docker reutiliza a camada existente no cache. Isso acelera a construção, mas pode resultar em comportamentos inesperados se um comando depende de recursos externos que mudam frequentemente (por exemplo, pacotes de software).Segurança: Evite armazenar senhas ou informações sensíveis em comandos
RUN
, pois elas podem ser visíveis em camadas intermediárias.
Exemplos Avançados
Uso de Scripts
Às vezes, pode ser mais fácil ou limpo escrever scripts shell que executam uma série de comandos e, em seguida, chamar esse script com RUN
.
Multistage Builds
Aqui, o comando RUN go build -o myapp
é usado para compilar o código no estágio builder
.
A instrução RUN
é essencial para personalizar a imagem Docker conforme suas necessidades específicas, permitindo instalar pacotes, configurar o ambiente e preparar a aplicação para execução.
Last updated