Variáveis de Ambiente e Configuração no Compose
Utilizando Variáveis de Ambiente no docker-compose.yml
Variáveis de ambiente permitem criar configurações do Docker Compose flexíveis e reutilizáveis. Ao definir variáveis, evita-se inserir valores fixos, como portas, tags de imagem ou credenciais diretamente no arquivo docker-compose.yml. Em vez disso, essas variáveis são referenciadas, e o Docker Compose substitui seus valores em tempo de execução. Essa abordagem é especialmente útil ao implantar a mesma aplicação em diferentes ambientes, como desenvolvimento, teste ou produção.
Para definir e utilizar variáveis de ambiente no seu arquivo Compose, siga estes passos:
- Armazene as variáveis de ambiente em um arquivo
.envno mesmo diretório do seudocker-compose.yml; - Referencie as variáveis no arquivo Compose utilizando a sintaxe
${VARIABLE_NAME}; - Substitua variáveis passando-as diretamente no shell ou como parte do seu pipeline de CI/CD.
Suponha que você queira configurar a senha do banco de dados e a porta da aplicação usando variáveis de ambiente. Crie um arquivo .env contendo:
DB_PASSWORD=supersecret
APP_PORT=8080
No seu docker-compose.yml, referencie essas variáveis da seguinte forma:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Ao executar docker-compose up, o Docker Compose irá substituir os valores do arquivo .env na configuração. Esse método mantém dados sensíveis ou específicos do ambiente fora do arquivo Compose e torna sua configuração mais portável.
Gerenciando Segredos e Dados Sensíveis em Arquivos Compose
Embora variáveis de ambiente sejam convenientes, nem sempre são a forma mais segura de lidar com informações sensíveis, como senhas, chaves de API ou certificados. Variáveis de ambiente podem ser expostas em logs, listas de processos ou controle de versão se não forem tratadas com cuidado. Para melhorar a segurança, é possível utilizar diversas técnicas para gerenciar segredos no Docker Compose:
- Armazene valores sensíveis em um arquivo
.envseparado e garanta que esse arquivo seja excluído do controle de versão usando o.gitignore; - Utilize o suporte do Docker Compose para Docker secrets se estiver implantando com Docker Swarm, o que permite montar segredos com segurança como arquivos dentro dos containers;
- Referencie segredos como arquivos no host e monte-os no container utilizando a chave
volumesno seu arquivo Compose.
Exemplo: Para evitar expor uma senha de banco de dados, armazene-a em um arquivo chamado db_password.txt e monte-o no container:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Essa abordagem mantém o segredo fora do arquivo Compose e das variáveis de ambiente, reduzindo o risco de exposição acidental. Sempre revise sua configuração e fluxos de trabalho para garantir que os segredos estejam protegidos e nunca faça commit de dados sensíveis no controle de versão.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 7.14
Variáveis de Ambiente e Configuração no Compose
Deslize para mostrar o menu
Utilizando Variáveis de Ambiente no docker-compose.yml
Variáveis de ambiente permitem criar configurações do Docker Compose flexíveis e reutilizáveis. Ao definir variáveis, evita-se inserir valores fixos, como portas, tags de imagem ou credenciais diretamente no arquivo docker-compose.yml. Em vez disso, essas variáveis são referenciadas, e o Docker Compose substitui seus valores em tempo de execução. Essa abordagem é especialmente útil ao implantar a mesma aplicação em diferentes ambientes, como desenvolvimento, teste ou produção.
Para definir e utilizar variáveis de ambiente no seu arquivo Compose, siga estes passos:
- Armazene as variáveis de ambiente em um arquivo
.envno mesmo diretório do seudocker-compose.yml; - Referencie as variáveis no arquivo Compose utilizando a sintaxe
${VARIABLE_NAME}; - Substitua variáveis passando-as diretamente no shell ou como parte do seu pipeline de CI/CD.
Suponha que você queira configurar a senha do banco de dados e a porta da aplicação usando variáveis de ambiente. Crie um arquivo .env contendo:
DB_PASSWORD=supersecret
APP_PORT=8080
No seu docker-compose.yml, referencie essas variáveis da seguinte forma:
version: "3.8"
services:
web:
image: myapp:latest
ports:
- "${APP_PORT}:80"
environment:
- DB_PASSWORD=${DB_PASSWORD}
Ao executar docker-compose up, o Docker Compose irá substituir os valores do arquivo .env na configuração. Esse método mantém dados sensíveis ou específicos do ambiente fora do arquivo Compose e torna sua configuração mais portável.
Gerenciando Segredos e Dados Sensíveis em Arquivos Compose
Embora variáveis de ambiente sejam convenientes, nem sempre são a forma mais segura de lidar com informações sensíveis, como senhas, chaves de API ou certificados. Variáveis de ambiente podem ser expostas em logs, listas de processos ou controle de versão se não forem tratadas com cuidado. Para melhorar a segurança, é possível utilizar diversas técnicas para gerenciar segredos no Docker Compose:
- Armazene valores sensíveis em um arquivo
.envseparado e garanta que esse arquivo seja excluído do controle de versão usando o.gitignore; - Utilize o suporte do Docker Compose para Docker secrets se estiver implantando com Docker Swarm, o que permite montar segredos com segurança como arquivos dentro dos containers;
- Referencie segredos como arquivos no host e monte-os no container utilizando a chave
volumesno seu arquivo Compose.
Exemplo: Para evitar expor uma senha de banco de dados, armazene-a em um arquivo chamado db_password.txt e monte-o no container:
services:
db:
image: postgres:latest
volumes:
- ./db_password.txt:/run/secrets/db_password
environment:
- POSTGRES_PASSWORD_FILE=/run/secrets/db_password
Essa abordagem mantém o segredo fora do arquivo Compose e das variáveis de ambiente, reduzindo o risco de exposição acidental. Sempre revise sua configuração e fluxos de trabalho para garantir que os segredos estejam protegidos e nunca faça commit de dados sensíveis no controle de versão.
Obrigado pelo seu feedback!