Introdução
Neste laboratório, você aprenderá como usar o comando docker compose alpha dry-run para testar alterações em sua configuração do Docker Compose sem realmente executá-las. Esta é uma ferramenta valiosa para verificar seu arquivo docker-compose.yaml e entender o impacto potencial dos comandos antes de aplicá-los.
Você começará preparando um arquivo docker-compose.yaml simples. Em seguida, usará a flag dry-run com comandos básicos do Docker Compose para observar a saída simulada e entender como o comando se comportaria. Finalmente, você aplicará dry-run a um comando que normalmente faria alterações, permitindo que você veja as ações pretendidas sem alterar seu sistema.
Prepare um arquivo docker-compose.yaml simples
Nesta etapa, prepararemos um arquivo docker-compose.yaml simples. Este arquivo definirá um serviço básico que podemos usar para demonstrar a funcionalidade dry-run do Docker Compose.
Primeiro, precisamos instalar o Docker Compose. Como ele não está pré-instalado neste ambiente, faremos o download do binário e o tornaremos executável.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Este comando baixa o binário do Docker Compose para a arquitetura do seu sistema e o salva em /usr/local/bin/docker-compose. O comando chmod +x torna o arquivo executável.
Agora, vamos verificar se o Docker Compose está instalado corretamente, verificando sua versão.
docker-compose version
Você deve ver uma saída indicando a versão instalada do Docker Compose.
Em seguida, criaremos um diretório para nosso projeto e navegaremos até ele.
mkdir ~/project/my-compose-app
cd ~/project/my-compose-app
Agora estamos no diretório ~/project/my-compose-app, onde criaremos nosso arquivo docker-compose.yaml.
Agora, vamos criar o arquivo docker-compose.yaml usando o editor nano.
nano docker-compose.yaml
Dentro do editor nano, cole o seguinte conteúdo:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
Este arquivo docker-compose.yaml define um único serviço chamado web. Este serviço usa a imagem Docker nginx:latest e mapeia a porta 80 no host para a porta 80 no container.
Salve o arquivo pressionando Ctrl + O, depois pressione Enter e saia do editor pressionando Ctrl + X.
Criamos com sucesso um arquivo docker-compose.yaml simples.
Use dry-run com um comando compose básico
Nesta etapa, usaremos a flag dry-run com um comando básico do Docker Compose para ver como ele funciona. A flag dry-run permite que você veja quais ações o Docker Compose tomaria sem realmente executá-las. Isso é útil para entender o impacto potencial de um comando antes de executá-lo.
Usaremos o comando docker-compose config com a flag dry-run. O comando config valida e exibe a configuração do arquivo Compose. Adicionar dry-run a este comando não altera significativamente seu comportamento, pois config já é um comando não destrutivo, mas é um bom ponto de partida para entender a sintaxe da flag.
Primeiro, certifique-se de estar no diretório que contém seu arquivo docker-compose.yaml.
cd ~/project/my-compose-app
Agora, execute o comando docker-compose config --dry-run.
docker-compose config --dry-run
Você deve ver a configuração analisada do seu arquivo docker-compose.yaml impressa no console. Esta saída é a mesma de executar docker-compose config sem a flag dry-run neste caso, porque config é inerentemente uma operação dry-run.
A saída confirma que o Docker Compose analisou com sucesso seu arquivo docker-compose.yaml e entende os serviços e configurações definidos nele.
Observe a saída do comando dry-run
Nesta etapa, observaremos cuidadosamente a saída do comando docker-compose config --dry-run que executamos na etapa anterior. Entender essa saída é crucial para ver como o Docker Compose interpreta seu arquivo docker-compose.yaml.
A saída que você viu é a configuração validada em formato YAML. Ela representa como o Docker Compose entende os serviços, redes e volumes definidos em seu arquivo.
Vamos analisar as partes principais da saída com base em nosso simples docker-compose.yaml:
services:
web:
build:
context: /home/labex/project/my-compose-app
container_name: my-compose-app-web-1
image: nginx:latest
ports:
- published: 80
target: 80
restart: "no"
Você verá a seção services e, dentro dela, o serviço web.
image: nginx:latest: Isso confirma que o Docker Compose identificou corretamente a imagem a ser usada para o serviçoweb.ports:: Esta seção mostra o mapeamento de portas.published: 80indica a porta do host etarget: 80indica a porta do container. Isso corresponde ao que definimos em nossodocker-compose.yaml.container_name: my-compose-app-web-1: O Docker Compose gera automaticamente um nome de container padrão com base no nome do diretório do projeto e no nome do serviço.build:: Mesmo que tenhamos especificado umaimage, o Docker Compose inclui uma seçãobuildcom o contexto definido para o diretório atual. Isso faz parte da representação interna e não significa que ele construirá uma imagem se você apenas especificou umaimage.restart: 'no': O Docker Compose define a política de reinicialização comonopor padrão, se não for especificado.
Esta saída é uma representação da configuração final que o Docker Compose usaria se você executasse um comando como docker-compose up. A flag dry-run, quando usada com comandos que fariam alterações (o que veremos na próxima etapa), mostraria as ações que ele tomaria, não apenas a configuração.
Para o comando config, a flag dry-run serve principalmente para validar a sintaxe e a estrutura do seu arquivo docker-compose.yaml. Se houvesse algum erro de sintaxe, o comando config (com ou sem dry-run) os relataria.
Use dry-run com um comando que faria alterações
Nesta etapa, usaremos a flag dry-run com um comando do Docker Compose que normalmente faria alterações em seu sistema, como docker-compose up. Isso demonstrará como dry-run pode mostrar as ações pretendidas sem realmente criar containers ou redes.
O comando docker-compose up, sem dry-run, faria o pull das imagens especificadas (se ainda não estiverem presentes), criaria redes e iniciaria containers com base no seu arquivo docker-compose.yaml. Ao adicionar a flag dry-run, podemos ver as etapas que ele tomaria sem executá-las.
Primeiro, certifique-se de estar no diretório correto:
cd ~/project/my-compose-app
Agora, execute o comando docker-compose up --dry-run.
docker-compose up --dry-run
Você verá uma saída indicando as ações que o Docker Compose faria. Para nosso simples docker-compose.yaml, a saída pode ser semelhante a esta:
Would create network "my-compose-app_default"
Would create service "web"
Would pull image "nginx:latest"
Would create container "my-compose-app-web-1"
Esta saída mostra claramente que o Docker Compose pretende:
- Criar uma rede padrão chamada
my-compose-app_default. - Criar um serviço chamado
web. - Fazer o pull da imagem
nginx:latest(se ela ainda não estiver disponível localmente). - Criar um container chamado
my-compose-app-web-1para o serviçoweb.
Observe que nenhuma dessas ações é realmente executada. Nenhuma rede é criada, nenhuma imagem é baixada e nenhum container é iniciado. A flag dry-run impede quaisquer alterações reais no seu ambiente Docker.
Isso é incrivelmente útil para:
- Visualizar alterações: Antes de implantar uma aplicação complexa, você pode usar
dry-runpara ver exatamente o que o Docker Compose fará. - Solução de problemas: Se um comando
docker-compose upestiver falhando,dry-runpode ajudá-lo a entender as etapas iniciais e identificar possíveis problemas em sua configuração. - Aprendizado: Ele permite que você experimente diferentes configurações
docker-compose.yamle veja seu impacto sem afetar seu sistema.
Você pode usar a flag dry-run com outros comandos do Docker Compose também, como down, start, stop e rm, para ver quais recursos seriam afetados.
Resumo
Neste laboratório, aprendemos como preparar um arquivo docker-compose.yaml simples, primeiro instalando o Docker Compose e, em seguida, criando um diretório e o arquivo YAML com uma definição básica do serviço Nginx. Em seguida, exploramos o uso da flag dry-run com os comandos do Docker Compose.
Observamos como a flag dry-run nos permite visualizar as ações que um comando executaria sem realmente fazer nenhuma alteração no sistema. Esta é uma ferramenta valiosa para testar alterações em nosso arquivo docker-compose.yaml e entender o impacto potencial dos comandos antes da execução.



