Recursos e Configuração Avançada do Compose
Embora a estrutura básica do arquivo Compose e os comandos sejam poderosos, o Docker Compose também oferece uma série de recursos e opções de configuração avançadas para ajudá-lo a construir aplicações mais complexas e robustas.
Variáveis de Ambiente e Segredos
Você pode usar variáveis de ambiente para passar configurações para seus serviços. O Docker Compose suporta variáveis de ambiente em tempo de compilação e em tempo de execução, que podem ser definidas no nível do serviço ou global.
Além disso, você pode usar Segredos Docker para armazenar informações confidenciais, como senhas de banco de dados ou chaves API, de forma segura e torná-las disponíveis para seus serviços.
version: "3"
services:
web:
image: myapp/web
environment:
- DATABASE_URL=mysql://root:${DB_PASSWORD}@db/myapp
secrets:
- db-password
secrets:
db-password:
file: ./db-password.txt
Gerenciamento de Dependências e Verificações de Saúde
O Docker Compose permite definir dependências de serviço, garantindo que os serviços sejam iniciados na ordem correta e que os serviços dependentes estejam saudáveis antes de iniciar outros serviços.
Você também pode configurar verificações de saúde para seus serviços, que permitem que o Compose monitore a saúde de seus contêineres e tome as ações apropriadas, como reiniciar contêineres não saudáveis.
version: "3"
services:
web:
image: myapp/web
depends_on:
db:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 5
db:
image: mysql:5.7
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 30s
timeout: 10s
retries: 5
Rede e Descoberta de Serviços
O Docker Compose cria automaticamente uma rede padrão para sua aplicação, mas você também pode definir redes personalizadas e controlar a configuração de rede para seus serviços.
Além disso, o Compose fornece descoberta de serviço embutida, permitindo que seus serviços encontrem e se comuniquem uns com os outros usando os nomes de serviço definidos no arquivo Compose.
version: "3"
services:
web:
image: myapp/web
networks:
- frontend
environment:
- DB_HOST=db
db:
image: mysql:5.7
networks:
- backend
networks:
frontend:
backend:
Ao aproveitar esses recursos avançados, você pode construir aplicações Docker Compose mais complexas, resilientes e escaláveis que atendam às necessidades da sua organização.