Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Gerenciamento de Aplicações Multicontêiner | Trabalhando com Docker Compose
Docker Essentials

bookGerenciamento de Aplicações Multicontêiner

Ao desenvolver aplicações modernas, frequentemente é necessário executar vários serviços em conjunto—como servidores web, bancos de dados e caches—que precisam se comunicar e funcionar como um sistema unificado. O Docker Compose simplifica esse processo ao permitir definir todos os seus serviços, suas dependências e como eles interagem, tudo em um único arquivo docker-compose.yml.

Definindo Dependências e Ligações de Serviços no docker-compose.yml

No seu docker-compose.yml, cada serviço pode declarar dependências e especificar como se conecta a outros. A chave depends_on permite definir a ordem de inicialização dos serviços, garantindo, por exemplo, que um banco de dados esteja em execução antes que sua aplicação tente se conectar. Além disso, o Compose cria automaticamente uma rede padrão para seu projeto, facilitando a descoberta e comunicação entre os serviços pelo nome do serviço.

Suponha que você tenha uma aplicação web que depende de um banco de dados. No seu arquivo Compose, defina os serviços assim:

version: "3.8"
services:
  app:
    build: .
    depends_on:
      - db
  db:
    image: postgres:15

Aqui:

  • O serviço app depende de db;
  • O Compose iniciará o contêiner do banco de dados antes da aplicação;
  • Ambos os serviços podem se referenciar usando os nomes dos serviços como hostnames dentro da rede do Compose.

Estratégias para Escalar Serviços e Atualizar Configurações

O Docker Compose facilita a escalabilidade horizontal dos serviços. Se sua aplicação precisa lidar com mais tráfego, é possível aumentar o número de contêineres para um serviço usando o parâmetro --scale ao executar docker compose up.

Para executar três instâncias do serviço de aplicação, utilize:

docker compose up --scale app=3
  • Este comando inicia três contêineres para o serviço app;
  • Todos os contêineres estão conectados à mesma rede e podem compartilhar recursos, como um banco de dados;
  • Ao escalar, certifique-se de que seus serviços sejam stateless ou possam lidar corretamente com múltiplas instâncias.

A atualização de configurações em um ambiente Compose é simples:

  • Modifique seu docker-compose.yml—por exemplo, altere variáveis de ambiente, limites de recursos ou imagens de serviços;
  • Aplique as alterações com o seguinte comando:
docker compose up -d
  • Este comando recria apenas os serviços cuja configuração foi alterada, minimizando o tempo de inatividade.

Monitoramento e Solução de Problemas em Aplicações Multi-Contêiner com Compose

Ao executar múltiplos contêineres, o monitoramento e a solução de problemas são essenciais. O Docker Compose oferece ferramentas para ajudar a observar a integridade e os logs dos seus serviços. É possível visualizar a saída de todos os contêineres em tempo real com:

docker compose logs -f

Este comando transmite os logs de todos os serviços, facilitando a identificação de erros ou problemas à medida que ocorrem. Se for necessário focar em um serviço específico, especifique o nome dele:

docker compose logs db

Para solução de problemas, é possível acessar um contêiner em execução utilizando:

docker compose exec app sh

Este comando fornece um shell dentro do contêiner app, permitindo inspecionar arquivos, executar comandos de diagnóstico ou verificar variáveis de ambiente. O monitoramento do uso de recursos e da integridade dos contêineres também pode ser realizado com ferramentas padrão do Docker, como docker stats.

1. Qual chave em um arquivo docker-compose.yml garante que um serviço seja iniciado antes de outro?

2. Como escalar um serviço chamado worker para cinco instâncias usando o Docker Compose?

3. Qual comando você usaria para visualizar logs em tempo real de todos os serviços em execução em uma aplicação Compose?

question mark

Qual chave em um arquivo docker-compose.yml garante que um serviço seja iniciado antes de outro?

Select the correct answer

question mark

Como escalar um serviço chamado worker para cinco instâncias usando o Docker Compose?

Select the correct answer

question mark

Qual comando você usaria para visualizar logs em tempo real de todos os serviços em execução em uma aplicação Compose?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 7.14

bookGerenciamento de Aplicações Multicontêiner

Deslize para mostrar o menu

Ao desenvolver aplicações modernas, frequentemente é necessário executar vários serviços em conjunto—como servidores web, bancos de dados e caches—que precisam se comunicar e funcionar como um sistema unificado. O Docker Compose simplifica esse processo ao permitir definir todos os seus serviços, suas dependências e como eles interagem, tudo em um único arquivo docker-compose.yml.

Definindo Dependências e Ligações de Serviços no docker-compose.yml

No seu docker-compose.yml, cada serviço pode declarar dependências e especificar como se conecta a outros. A chave depends_on permite definir a ordem de inicialização dos serviços, garantindo, por exemplo, que um banco de dados esteja em execução antes que sua aplicação tente se conectar. Além disso, o Compose cria automaticamente uma rede padrão para seu projeto, facilitando a descoberta e comunicação entre os serviços pelo nome do serviço.

Suponha que você tenha uma aplicação web que depende de um banco de dados. No seu arquivo Compose, defina os serviços assim:

version: "3.8"
services:
  app:
    build: .
    depends_on:
      - db
  db:
    image: postgres:15

Aqui:

  • O serviço app depende de db;
  • O Compose iniciará o contêiner do banco de dados antes da aplicação;
  • Ambos os serviços podem se referenciar usando os nomes dos serviços como hostnames dentro da rede do Compose.

Estratégias para Escalar Serviços e Atualizar Configurações

O Docker Compose facilita a escalabilidade horizontal dos serviços. Se sua aplicação precisa lidar com mais tráfego, é possível aumentar o número de contêineres para um serviço usando o parâmetro --scale ao executar docker compose up.

Para executar três instâncias do serviço de aplicação, utilize:

docker compose up --scale app=3
  • Este comando inicia três contêineres para o serviço app;
  • Todos os contêineres estão conectados à mesma rede e podem compartilhar recursos, como um banco de dados;
  • Ao escalar, certifique-se de que seus serviços sejam stateless ou possam lidar corretamente com múltiplas instâncias.

A atualização de configurações em um ambiente Compose é simples:

  • Modifique seu docker-compose.yml—por exemplo, altere variáveis de ambiente, limites de recursos ou imagens de serviços;
  • Aplique as alterações com o seguinte comando:
docker compose up -d
  • Este comando recria apenas os serviços cuja configuração foi alterada, minimizando o tempo de inatividade.

Monitoramento e Solução de Problemas em Aplicações Multi-Contêiner com Compose

Ao executar múltiplos contêineres, o monitoramento e a solução de problemas são essenciais. O Docker Compose oferece ferramentas para ajudar a observar a integridade e os logs dos seus serviços. É possível visualizar a saída de todos os contêineres em tempo real com:

docker compose logs -f

Este comando transmite os logs de todos os serviços, facilitando a identificação de erros ou problemas à medida que ocorrem. Se for necessário focar em um serviço específico, especifique o nome dele:

docker compose logs db

Para solução de problemas, é possível acessar um contêiner em execução utilizando:

docker compose exec app sh

Este comando fornece um shell dentro do contêiner app, permitindo inspecionar arquivos, executar comandos de diagnóstico ou verificar variáveis de ambiente. O monitoramento do uso de recursos e da integridade dos contêineres também pode ser realizado com ferramentas padrão do Docker, como docker stats.

1. Qual chave em um arquivo docker-compose.yml garante que um serviço seja iniciado antes de outro?

2. Como escalar um serviço chamado worker para cinco instâncias usando o Docker Compose?

3. Qual comando você usaria para visualizar logs em tempo real de todos os serviços em execução em uma aplicação Compose?

question mark

Qual chave em um arquivo docker-compose.yml garante que um serviço seja iniciado antes de outro?

Select the correct answer

question mark

Como escalar um serviço chamado worker para cinco instâncias usando o Docker Compose?

Select the correct answer

question mark

Qual comando você usaria para visualizar logs em tempo real de todos os serviços em execução em uma aplicação Compose?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 3
some-alt