Editado 1 Uma semana atrás por ExtremeHow Equipe Editorial
DockerContêineresImplantação de AplicaçõesDocker ComposeOrquestraçãoConfiguraçãoScriptingDevOpsLinha de comandoMulti-Contêiner
Tradução atualizada 1 Uma semana atrás
O Docker Compose é uma ferramenta usada para definir e executar aplicações Docker de múltiplos contêineres. Com o Docker Compose, você pode usar um arquivo YAML para configurar os serviços da sua aplicação e, em seguida, usar um único comando para criar e iniciar todos os serviços a partir da sua configuração. Isso é incrivelmente útil para trabalhar com aplicações complexas que contêm muitos serviços interligados. O objetivo deste guia é explicar o uso do Docker Compose no Linux de maneira muito detalhada.
Antes de mergulhar no Docker Compose, é importante entender o que é o Docker. O Docker é uma plataforma que permite aos desenvolvedores e administradores de sistemas empacotar aplicações em contêineres — componentes executáveis padronizados que combinam o código-fonte da aplicação com as bibliotecas do sistema operacional e dependências necessárias para executar esse código em qualquer ambiente.
O Docker Compose leva isso um passo adiante, permitindo que você configure e inicie múltiplos contêineres Docker como um único serviço. Isso significa que você pode gerenciar todas as dependências da sua aplicação usando um arquivo simples chamado docker-compose.yml
. Este arquivo contém informações sobre qual imagem executar, quais portas expor, mapeamentos de volumes e mais.
O primeiro passo para usar o Docker Compose é garantir que o Docker esteja instalado e em execução na sua máquina Linux. A maioria das distribuições Linux modernas vem com o Docker em seus repositórios oficiais, mas você também pode instalá-lo a partir do repositório oficial do Docker para obter a versão mais recente.
# Atualizar o índice de pacotes apt e instalar pacotes para permitir que apt use um repositório via HTTPS
sudo apt-get update -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y
# Adicionar a chave GPG oficial do Docker e verificar
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Configurar o repositório estável
sudo add-apt-repository \
"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# Instalar o Docker CE
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
# Verificar a instalação do Docker
sudo docker run hello-world
Uma vez instalado o Docker, o próximo passo é instalar o Docker Compose. Ao contrário do Docker, o Compose é uma ferramenta separada. Você pode baixar o Docker Compose da página de lançamento do GitHub.
# Baixar a versão estável atual do Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Aplicar permissões executáveis ao binário
sudo chmod +x /usr/local/bin/docker-compose
# Verificar se o Docker Compose está instalado corretamente
docker-compose --version
O arquivo docker-compose.yml
é o núcleo do uso do Docker Compose. É aqui que você define todos os seus serviços (essencialmente, os contêineres da sua aplicação) e como eles interagem entre si. A estrutura do arquivo docker-compose.yml
é bastante simples. Normalmente, ele começa definindo a versão do Compose que está sendo usada, seguido de uma lista de serviços.
Aqui está um exemplo básico de um arquivo docker-compose.yml
:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: exemplo
No exemplo acima, o arquivo de composição está usando a versão 3.8. Ele define dois serviços, web
e database
. O serviço web
usa a imagem Nginx e mapeia a porta 80 do contêiner para a porta 80 do host. O serviço database
usa a imagem MySQL com a senha root especificada.
Uma vez que você configurou seu arquivo docker-compose.yml
, sua aplicação de múltiplos serviços pode ser executada com um comando simples. Navegue até o diretório que contém o arquivo docker-compose.yml
e execute:
docker-compose up
O comando docker-compose up
procura pelo arquivo docker-compose.yml
no diretório atual, cria as imagens necessárias se elas não estiverem disponíveis localmente e inicia os serviços definidos.
Se você quiser executar a aplicação em segundo plano (modo isolado), pode usar a opção -d
:
docker-compose up -d
O Docker Compose oferece vários comandos para ajudar a gerenciar seu ambiente:
docker-compose ps
: Exibe o status dos serviços definidos no arquivo de composição.docker-compose start
: Inicia um contêiner existente para um serviço.docker-compose stop
: Para os contêineres em execução, sem removê-los.docker-compose down
: Para e remove todos os contêineres definidos no arquivo docker-compose.yml
.docker-compose logs
: Recupera os logs de um serviço.O Docker Compose também permite que você defina volumes e redes em seu arquivo docker-compose.yml
. Volumes são usados para persistir dados e redes ajudam na comunicação entre serviços.
Para definir um volume, adicione o seguinte na seção de Serviços:
services:
database:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Esta configuração cria um volume nomeado db_data
e o monta em /var/lib/mysql
dentro do contêiner do serviço de banco de dados, que armazena os dados do MySQL.
A rede também pode ser personalizada:
services:
frontend:
image: node:14
networks:
- frontend-network
backend:
image: node:14
networks:
- backend-network
networks:
frontend-network:
backend-network:
Uma característica poderosa do Docker Compose é a capacidade de dimensionar serviços. Isso é especialmente útil para simular condições mais realistas em um ambiente de desenvolvimento. Você pode dimensionar um serviço com a opção --scale
.
docker-compose up --scale web=3
O comando acima iniciará três instâncias do serviço web
.
Você pode executar comandos arbitrários dentro dos seus serviços em execução usando docker-compose exec
:
docker-compose exec web bash
Este comando abre um shell bash dentro do contêiner do serviço web
em execução.
Por padrão, o Docker Compose cria uma rede padrão para seus serviços. No entanto, você pode vincular todos os serviços à mesma rede definindo uma rede e especificando-a em cada serviço:
version: '3.8'
services:
web:
image: nginx:latest
networks:
- custom-network
database:
image: mysql:5.7
networks:
- custom-network
networks:
custom-network:
Os serviços web
e database
estão ambos conectados à custom-network
, permitindo que se comuniquem de forma independente.
O Docker Compose é uma ferramenta robusta que simplifica o processo de gerenciamento de aplicações Docker de múltiplos contêineres. Ao definir serviços no arquivo docker-compose.yml
, você pode rapidamente implantar e gerenciar o stack da sua aplicação. A chave para o uso eficaz do Docker Compose é entender as opções de configuração do arquivo docker-compose.yml
, incluindo serviços, volumes e redes.
Este guia abrangente fornece uma visão geral de como configurar Docker e Docker Compose no Linux, criar um arquivo de composição e gerenciar sua aplicação. Com este conhecimento, você pode efetivamente alavancar o Docker Compose para lidar com ambientes complexos baseados em Linux. Pratique com suas próprias aplicações para se familiarizar mais e personalize as configurações do Docker Compose para atender às necessidades específicas.
Se você encontrar algo errado com o conteúdo do artigo, você pode