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

Leave a Reply