ENV
A instrução ENV
em um Dockerfile é usada para definir variáveis de ambiente que estarão disponíveis durante a construção da imagem e na execução do contêiner. Essas variáveis podem configurar comportamentos da aplicação, fornecer valores padrão, ou armazenar dados sensíveis (embora seja recomendado ter cuidado ao usá-las para este último propósito).
Sintaxe Básica
Funcionalidades do ENV
ENV
Definir Variáveis de Ambiente: Variáveis de ambiente definidas com
ENV
podem ser utilizadas em comandos subsequentes no Dockerfile, assim como na aplicação em execução dentro do contêiner.Substituição de Variáveis: Você pode usar as variáveis definidas com
ENV
em outras instruções do Dockerfile, comoRUN
,CMD
, eENTRYPOINT
.
Exemplos de Uso
Definir uma Variável de Ambiente Simples
Aqui, a variável NODE_ENV
é definida como production
. Essa variável pode ser usada pela aplicação Node.js para ajustar configurações de produção.
Usar Variáveis de Ambiente em Comandos RUN
Neste exemplo:
A variável
APP_HOME
é definida como/usr/src/app
.O comando
WORKDIR
usa$APP_HOME
para definir o diretório de trabalho.O comando
COPY
também usa$APP_HOME
para determinar o local onde os arquivos serão copiados.
Definir Múltiplas Variáveis em uma Única Instrução
Aqui, três variáveis de ambiente são definidas em uma única instrução ENV
, melhorando a legibilidade do Dockerfile.
Variáveis de Ambiente e Execução do Contêiner
As variáveis de ambiente definidas com ENV
no Dockerfile estarão disponíveis para qualquer comando ou script que seja executado no contêiner.
Você pode sobrepor ou adicionar variáveis de ambiente ao executar um contêiner usando a opção -e
ou --env
no comando docker run
:
Este comando irá sobrescrever a variável NODE_ENV
para o valor development
apenas durante a execução do contêiner.
Boas Práticas e Considerações
Evitar Informações Sensíveis: Embora seja possível definir segredos ou credenciais com
ENV
, essa prática não é recomendada, pois as variáveis podem ser expostas ao inspecionar a imagem ou o contêiner. Use ferramentas específicas para gestão de segredos em vez disso.Valor Padrão para Variáveis: Usar
ENV
para definir valores padrão é uma prática comum, permitindo que esses valores sejam sobrescritos durante a execução, se necessário.Ordem das Instruções
ENV
: Colocar as instruçõesENV
no início do Dockerfile permite que você reutilize as variáveis nas instruções subsequentes, tornando o Dockerfile mais limpo e eficiente.
Exemplo Avançado
Configurando um Contêiner com Variáveis de Ambiente
Neste exemplo:
APP_HOME
define o diretório base da aplicação.APP_PORT
configura a porta na qual a aplicação será exposta.JAVA_OPTS
permite ajustar as opções de execução do JVM.Todas as variáveis são usadas posteriormente no Dockerfile, garantindo que os comandos sejam consistentes e configuráveis.
Resumo
ENV
define variáveis de ambiente que podem ser usadas durante a construção da imagem e na execução do contêiner.Variáveis de ambiente podem ser referenciadas em outras instruções do Dockerfile, melhorando a flexibilidade e configurabilidade.
É recomendável evitar o uso de
ENV
para armazenar informações sensíveis e adotar boas práticas de segurança e gestão de segredos.
Laboratório
Diferente de LABEL que não afeta a imagem nem o container, ENV cria uma variável de ambiente dentro do container.
A variável de ambiente pode ser sobrescrita na construção do container:
Last updated