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
ENV VARIAVEL_NOME=valorFuncionalidades do ENV
ENVDefinir Variáveis de Ambiente: Variáveis de ambiente definidas com
ENVpodem 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
ENVem outras instruções do Dockerfile, comoRUN,CMD, eENTRYPOINT.
Exemplos de Uso
Definir uma Variável de Ambiente Simples
FROM node:14
ENV NODE_ENV=productionAqui, 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
FROM python:3.10
ENV APP_HOME=/usr/src/app
WORKDIR $APP_HOME
COPY . $APP_HOMENeste exemplo:
A variável
APP_HOMEé definida como/usr/src/app.O comando
WORKDIRusa$APP_HOMEpara definir o diretório de trabalho.O comando
COPYtambém usa$APP_HOMEpara 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
ENVpara 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çõesENVno 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_HOMEdefine o diretório base da aplicação.APP_PORTconfigura a porta na qual a aplicação será exposta.JAVA_OPTSpermite 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
ENVdefine 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
ENVpara 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