ANÚNCIO

~/questoes/devops

Qual é o propósito da instrução ENV 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

Entendendo a Instrução ENV no Dockerfile

Conceito central

A instrução ENV no Dockerfile define variáveis de ambiente que ficam disponíveis dentro da imagem Docker e em todos os containers criados a partir dela. Essas variáveis permitem configurar valores importantes como dados de conexão, chaves de API e modo de execução sem precisar alterar o código.

Por que essa resposta faz sentido

A instrução ENV cria variáveis de ambiente padrão que fazem parte da imagem Docker durante sua construção. Qualquer container que você criar a partir dessa imagem terá acesso a essas variáveis automaticamente, facilitando a configuração da aplicação sem necessidade de modificar arquivos ou código.

Armadilhas comuns

  • Confundir ENV com a flag -e do docker run: ENV define valores na imagem, enquanto -e permite passar valores em tempo de execução
  • Pensar que ENV cria um arquivo .env: ENV trabalha internamente na imagem Docker, não gera arquivos de configuração
  • Acreditar que ENV é obrigatório: você pode deixar variáveis dinâmicas e passá-las com -e ao executar o container, sem precisar de ENV no Dockerfile

Entenda as alternativas

A

ENV não funciona de forma interativa. Ela apenas define valores fixos no momento da construção da imagem. Se você quiser permitir que o usuário insira valores durante a execução, precisa usar flags como -e ao rodar o docker run.

B

ENV não remove variáveis de ambiente. Na verdade, ela adiciona novas variáveis ou sobrescreve valores existentes dentro do container. O container mantém acesso às variáveis que você definir com ENV.

C

Esta é a resposta correta. ENV define variáveis de ambiente padrão que são incorporadas na imagem durante a construção com docker build. Todos os containers criados a partir dessa imagem terão essas variáveis disponíveis automaticamente.

D

ENV não cria um arquivo .env no seu projeto. Ela apenas define variáveis dentro da imagem Docker. Um arquivo .env é um arquivo de texto separado que você pode usar para armazenar configurações localmente, mas ENV funciona de forma diferente e exclusivamente dentro do Docker.

Dica prática: Use ENV no Dockerfile para valores padrão que fazem sentido para a maioria dos casos. Por exemplo, ENV NODE_ENV=production garante que sua aplicação Node.js rode em modo produção por padrão. Se precisar de valores diferentes para diferentes execuções, passe-os com docker run -e VARIAVEL=valor.

Revise pensando: Qual é a diferença prática entre definir uma variável com ENV no Dockerfile e passá-la com -e ao executar docker run?