Exemplos Práticos de Uso do Docker Compose
Nesta seção, exploraremos alguns exemplos práticos de como usar o Docker Compose para gerenciar suas aplicações.
Exemplo 1: Implantando uma Aplicação Web e um Banco de Dados
Digamos que temos uma aplicação web que requer um banco de dados MySQL. Podemos criar um arquivo docker-compose.yml para definir e gerenciar essa configuração:
version: "3"
services:
web:
image: myapp/web:latest
ports:
- "80:8080"
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
Neste exemplo, temos dois serviços: web e db. O serviço web executa nossa aplicação web, enquanto o serviço db executa um banco de dados MySQL. O campo depends_on garante que o serviço web seja iniciado após o serviço db.
Para implantar esta aplicação, podemos executar os seguintes comandos:
docker-compose up -d
Isso iniciará a aplicação em modo desacoplado, permitindo que você continue usando o terminal.
Exemplo 2: Escalonando um Serviço
Suponha que desejamos escalar nossa aplicação web para lidar com mais tráfego. Podemos usar o comando docker-compose scale para fazer isso:
docker-compose scale web=3
Isso escalará o serviço web para 3 réplicas, permitindo que distribuamos a carga por vários contêineres.
Exemplo 3: Implantando uma Aplicação Multicamadas
O Docker Compose é particularmente útil para gerenciar aplicações multicamadas, como uma aplicação web com um frontend, backend e banco de dados. Aqui está um exemplo:
version: "3"
services:
frontend:
image: myapp/frontend:latest
ports:
- "80:80"
depends_on:
- backend
backend:
image: myapp/backend:latest
environment:
DB_HOST: db
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
Neste exemplo, temos três serviços: frontend, backend e db. O serviço frontend depende do serviço backend, e o serviço backend depende do serviço db. Isso garante que a aplicação seja implantada na ordem correta.
Usando o Docker Compose, você pode facilmente gerenciar a implantação e o escalonamento de suas aplicações multicamadas, tornando-o uma ferramenta poderosa para desenvolvimento e implantação baseados em contêineres.