O Docker Compose mudou de forma fundamental a maneira como desenvolvedores trabalham com aplicações conteinerizadas, especialmente ao coordenar serviços que dependem uns dos outros. Essa ferramenta substitui o gerenciamento manual de contêineres por um fluxo de trabalho estruturado e orientado por YAML, permitindo que equipes definam arquiteturas completas de aplicações em um único arquivo de configuração.
Em ambientes Ubuntu, isso se traduz em implantações reproduzíveis, escalonamento simplificado e menor sobrecarga operacional. Este guia oferece uma nova perspectiva sobre a instalação e o uso do Docker Compose, fornecendo insights mais profundos sobre sua implementação prática.
Antes de iniciar este tutorial, você precisará ter:
Implantar uma instância de servidor cloud Ubuntu na Hostman.
Garantir que você tenha uma conta de usuário com privilégios sudo ou acesso root, permitindo instalar pacotes e gerenciar o Docker.
Ter o Docker instalado e em execução no servidor, pois o Docker Compose funciona sobre o Docker Engine.
Aplicações modernas geralmente envolvem componentes interconectados, como APIs, bancos de dados e camadas de cache. Gerenciar esses elementos individualmente com comandos do Docker torna-se trabalhoso à medida que a complexidade cresce. O Docker Compose resolve isso permitindo declarar todos os serviços, redes e requisitos de armazenamento em um arquivo docker-compose.yml. Essa abordagem garante consistência entre ambientes — seja em uma máquina Ubuntu local ou em um servidor na nuvem.
Por exemplo, considere uma aplicação web composta por um backend Node.js, um banco de dados PostgreSQL e um cache Redis. Sem o Docker Compose, cada componente exigiria comandos docker run separados com configurações de rede precisas. Com o Compose, essas relações são organizadas uma única vez, permitindo iniciar e encerrar tudo com apenas um comando.
Siga estas etapas para instalar o Docker Compose no seu sistema Ubuntu.
O Docker Compose funciona como uma extensão do Docker, portanto verifique seu status:
sudo systemctl status docker
Se estiver inativo, inicie o serviço com:
sudo systemctl start docker
Atualize a lista de pacotes para garantir acesso às versões mais recentes do software:
sudo apt-get update
Para comunicação segura com os repositórios do Docker, são necessários os seguintes pacotes:
sudo apt-get install ca-certificates curl
Autentique os pacotes do Docker adicionando a chave criptográfica:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Esta etapa garante que os pacotes não tenham sido alterados durante a transferência.
Adicione o repositório adequado à sua versão do Ubuntu:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
O comando detecta automaticamente a versão do sistema operacional usando VERSION_CODENAME.
Atualize os repositórios e instale a extensão do Compose:
sudo apt update
sudo apt-get install docker-compose-plugin
Confirme se a instalação foi bem-sucedida:
docker compose version
Exemplo de saída:
Docker Compose version v2.33.0
Vamos implantar um servidor web usando Nginx para demonstrar os recursos do Docker Compose.
Crie um espaço de trabalho dedicado:
mkdir ~/compose-demo && cd ~/compose-demo
Crie o arquivo de configuração:
nano docker-compose.yml
Insira o seguinte conteúdo:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./app:/usr/share/nginx/html
Explicação:
services: Elemento raiz que define os contêineres
web: Nome personalizado do serviço
image: Imagem do Nginx baseada em Alpine, com menor consumo de recursos
ports: Mapeia a porta 8080 do host para a porta 80 do contêiner
volumes: Sincroniza o diretório local app com a raiz web do contêiner
Construa a estrutura HTML:
mkdir app
nano app/index.html
Adicione o seguinte conteúdo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Docker Compose Test</title>
</head>
<body>
<h1>Hello from Docker Compose!</h1>
</body>
</html>
docker compose up -d
O Docker Compose baixará automaticamente a imagem do Nginx, se necessário, e configurará a rede.
docker compose ps -a
Acesse http://localhost:8080 localmente ou http://<SERVER_IP>:8080 em servidores remotos. A página de teste deverá ser exibida corretamente.
Se a página não carregar ou ocorrerem erros, inspecione os logs do contêiner:
docker compose logs web
Parar os contêineres temporariamente:
docker compose stop
Remover todos os recursos do projeto:
docker compose down
Estes comandos ampliam o gerenciamento de contêineres:
docker compose up --build – Reconstruir imagens antes de iniciar os contêineres
docker compose pause – Pausar contêineres sem encerrá-los
docker compose top – Exibir processos em execução nos contêineres
docker compose config – Validar e exibir a configuração final
docker compose exec – Executar comandos em contêineres ativos
(por exemplo, docker compose exec web nginx -t para testar a configuração do Nginx)
O Docker Compose transforma a orquestração de múltiplos contêineres de uma tarefa manual e complexa em um processo estruturado, repetível e eficiente. Seguindo as etapas descritas — instalando o Docker Compose, definindo serviços em YAML e utilizando os comandos essenciais — você pode gerenciar aplicações complexas com segurança e confiança.