Variáveis de Ambiente em Docker
Variáveis de ambiente são valores definidos fora da aplicação. São utilizados para dados sensíveis como: ApiKey, ConnectionString, senhas, etc. Elas existem para essas informações não ficarem exposta no código-fonte ou no appsettings.json. Ordem de prioridade O .NET lê as configurações nesta ordem de prioridade: Variáveis de ambiente (Docker, Kubernetes, etc.) Argumentos de linha de comando (dotnet run --ConnectionStrings:TFConnection=...) Arquivo appsettings.{Environment}.json (ex: appsettings.Production.json) Arquivo appsettings.json Valores padrão no código (Hardcoded values) Ou seja, se o Docker fornecer uma variável de ambiente, ela vai sobrescrever o que está no appsettings.json. Passando variável de ambiente no Docker Existe algumas formas de passar as variáveis de ambientes para o ambiente docker e isso varia de acordo com a sua abordagem utilizada no projeto Docker run Esse é o jeito mais direto. Você pode injetar variáveis com a flag -e: docker run -e ApiKey=SUA_CHAVE_API minha-imagem Aqui, ApiKey será injetada no ambiente do container e estará disponível para o .NET usar como configuração. Docker Compose Se estiver usando docker-compose, o arquivo pode conter a seção environment dentro do serviço: services: minha-api: image: minha-imagem environment: - ApiKey=SUA_CHAVE_API Ou com o formato de chave/valor: environment: ApiKey: SUA_CHAVE_API Usando .env (forma recomendada) Você pode criar um arquivo .env com suas variáveis, e referenciar ele no docker-compose.yml. .env: ApiKey=SUA_CHAVE_API docker-compose.yml: services: minha-api: image: minha-imagem env_file: - .env O Docker automaticamente carrega as variáveis do arquivo .env e injeta no ambiente do container. Continue a leitura do artigo aqui

Variáveis de ambiente são valores definidos fora da aplicação. São utilizados para dados sensíveis como: ApiKey, ConnectionString, senhas, etc. Elas existem para essas informações não ficarem exposta no código-fonte ou no appsettings.json
.
Ordem de prioridade
O .NET lê as configurações nesta ordem de prioridade:
- Variáveis de ambiente (Docker, Kubernetes, etc.)
- Argumentos de linha de comando (
dotnet run --ConnectionStrings:TFConnection=...
) - Arquivo
appsettings.{Environment}.json
(ex:appsettings.Production.json
) - Arquivo
appsettings.json
- Valores padrão no código (
Hardcoded values
)
Ou seja, se o Docker fornecer uma variável de ambiente, ela vai sobrescrever o que está no appsettings.json
.
Passando variável de ambiente no Docker
Existe algumas formas de passar as variáveis de ambientes para o ambiente docker e isso varia de acordo com a sua abordagem utilizada no projeto
Docker run
Esse é o jeito mais direto. Você pode injetar variáveis com a flag -e
:
docker run -e ApiKey=SUA_CHAVE_API minha-imagem
Aqui, ApiKey será injetada no ambiente do container e estará disponível para o .NET usar como configuração.
Docker Compose
Se estiver usando docker-compose, o arquivo pode conter a seção environment dentro do serviço:
services:
minha-api:
image: minha-imagem
environment:
- ApiKey=SUA_CHAVE_API
Ou com o formato de chave/valor:
environment:
ApiKey: SUA_CHAVE_API
Usando .env
(forma recomendada)
Você pode criar um arquivo .env com suas variáveis, e referenciar ele no docker-compose.yml.
.env
:
ApiKey=SUA_CHAVE_API
docker-compose.yml
:
services:
minha-api:
image: minha-imagem
env_file:
- .env
O Docker automaticamente carrega as variáveis do arquivo .env e injeta no ambiente do container.