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

Apr 17, 2025 - 02:33
 0
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:

  1. Variáveis de ambiente (Docker, Kubernetes, etc.)
  2. Argumentos de linha de comando (dotnet run --ConnectionStrings:TFConnection=...)
  3. Arquivo appsettings.{Environment}.json (ex: appsettings.Production.json)
  4. Arquivo appsettings.json
  5. 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