Como usar o comando docker compose config para validar e visualizar arquivos compose

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker-compose config para validar e visualizar seus arquivos Docker Compose. Começaremos instalando o Docker Compose e, em seguida, criaremos um arquivo compose básico.

Você então usará o comando docker-compose config para validar a sintaxe do arquivo compose, visualizar a configuração resolvida nos formatos YAML e JSON, e extrair informações específicas como nomes de serviços e nomes de imagens. Este laboratório irá equipá-lo com habilidades essenciais para trabalhar com arquivos Docker Compose de forma eficaz.

Validar um arquivo compose básico

Nesta etapa, você aprenderá como validar um arquivo Docker Compose básico. Antes de começarmos, precisamos instalar o Docker Compose, pois ele não está pré-instalado neste ambiente.

Primeiro, vamos baixar o binário do Docker Compose. Baixaremos a versão 1.29.2, que é uma versão estável e amplamente utilizada.

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

Este comando baixa o binário do Docker Compose do repositório oficial do GitHub e o salva em /usr/local/bin/docker-compose. As partes $(uname -s) e $(uname -m) detectam automaticamente seu sistema operacional e arquitetura para baixar o binário correto.

Em seguida, precisamos dar ao binário baixado permissões de execução.

sudo chmod +x /usr/local/bin/docker-compose

Este comando torna o comando docker-compose executável.

Agora, vamos verificar a instalação verificando a versão.

docker-compose --version

Você deve ver uma saída semelhante a docker-compose version 1.29.2, build 5becea4c. Isso confirma que o Docker Compose está instalado corretamente.

Agora, vamos criar um arquivo Docker Compose simples. Criaremos um arquivo chamado docker-compose.yml no seu diretório ~/project.

nano ~/project/docker-compose.yml

Adicione o seguinte conteúdo ao arquivo:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Este é um arquivo Docker Compose muito básico. Ele define um único serviço chamado web que usa a imagem nginx:latest e mapeia a porta 80 no host para a porta 80 no contêiner.

Salve o arquivo e saia do editor nano (Pressione Ctrl + X, depois Y, depois Enter).

Antes de executar o arquivo compose, é uma boa prática validar sua sintaxe. O Docker Compose fornece um comando para isso: config.

docker-compose config

Se a sintaxe do seu arquivo docker-compose.yml estiver correta, este comando exibirá a configuração resolvida em formato YAML. Se houver algum erro de sintaxe, ele imprimirá uma mensagem de erro indicando o problema. Isso ajuda você a detectar erros no início, antes de tentar construir ou executar seus serviços.

Visualizar a configuração resolvida em formato YAML

Na etapa anterior, validamos a sintaxe do nosso arquivo docker-compose.yml usando o comando docker-compose config. Por padrão, este comando exibe a configuração resolvida em formato YAML. Isso é útil para ver a configuração final que o Docker Compose usará, incluindo quaisquer valores padrão ou mesclagens de vários arquivos compose.

Vamos executar o comando novamente para visualizar a saída. Certifique-se de estar no diretório ~/project onde você criou o arquivo docker-compose.yml.

cd ~/project
docker-compose config

Você deve ver uma saída semelhante a esta:

services:
  web:
    build:
      context: /home/labex/project
    image: nginx:latest
    ports:
      - published: 80
        target: 80
version: "3.8"

Observe que a saída inclui a seção build com o context definido como /home/labex/project. Embora não tenhamos definido explicitamente uma seção build em nosso docker-compose.yml, o Docker Compose adiciona um contexto de construção padrão, que é o diretório que contém o arquivo compose. Este é um exemplo de como docker-compose config mostra a configuração resolvida, incluindo os padrões.

Visualizar a configuração resolvida em formato YAML é útil para depurar e entender exatamente como o Docker Compose interpreta seu arquivo.

Visualizar a configuração resolvida em formato JSON

Na etapa anterior, vimos como docker-compose config exibe a configuração resolvida em formato YAML por padrão. Às vezes, pode ser útil visualizar a configuração em formato JSON, especialmente se você estiver trabalhando com ferramentas ou scripts que processam JSON.

O comando docker-compose config possui uma flag --format que permite especificar o formato de saída. Para obter a saída em formato JSON, usamos --format json.

Certifique-se de estar no diretório ~/project.

cd ~/project
docker-compose config --format json

Você deve ver a configuração resolvida impressa no console em formato JSON. A saída terá uma aparência semelhante a esta (a formatação exata pode variar ligeiramente):

{
  "services": {
    "web": {
      "build": {
        "context": "/home/labex/project"
      },
      "image": "nginx:latest",
      "ports": [
        {
          "published": 80,
          "target": 80
        }
      ]
    }
  },
  "version": "3.8"
}

Comparando esta saída com a saída YAML da etapa anterior, você pode ver que ela representa a mesma configuração, mas em um formato de dados diferente. Ambos os formatos são úteis, dependendo de suas necessidades.

Visualizar a configuração em formato JSON pode ser particularmente útil ao integrar o Docker Compose com outras ferramentas ou para o processamento programático da configuração.

Imprimir apenas os nomes dos serviços

Nesta etapa, aprenderemos como usar o comando docker-compose config para imprimir apenas os nomes dos serviços definidos em nosso arquivo compose. Isso pode ser útil quando você precisa de uma lista rápida dos serviços sem os detalhes completos da configuração.

O comando docker-compose config possui uma flag --services que faz exatamente isso. Ele analisará o arquivo compose e exibirá apenas os nomes dos serviços, um por linha.

Certifique-se de estar no diretório ~/project.

cd ~/project
docker-compose config --services

Como nosso arquivo docker-compose.yml atualmente possui apenas um serviço chamado web, a saída deste comando será:

web

Se você tivesse vários serviços definidos em seu arquivo compose, cada nome de serviço seria impresso em uma nova linha. Por exemplo, se você tivesse serviços chamados web, db e app, a saída seria:

web
db
app

Esta flag é uma maneira conveniente de listar rapidamente os serviços definidos em seu projeto Docker Compose.

Imprimir apenas os nomes das imagens

Nesta etapa final, aprenderemos como usar o comando docker-compose config para imprimir apenas os nomes das imagens usadas pelos serviços definidos em nosso arquivo compose. Isso é útil para ver rapidamente em quais imagens seu projeto depende.

O comando docker-compose config possui uma flag --images que faz isso. Ele analisará o arquivo compose e exibirá apenas os nomes das imagens, um por linha.

Certifique-se de estar no diretório ~/project.

cd ~/project
docker-compose config --images

Como nosso arquivo docker-compose.yml usa a imagem nginx:latest para o serviço web, a saída deste comando será:

nginx:latest

Se você tivesse vários serviços usando imagens diferentes, cada nome de imagem seria impresso em uma nova linha. Por exemplo, se você tivesse serviços usando nginx:latest, mysql:5.7 e python:3.9, a saída seria:

nginx:latest
mysql:5.7
python:3.9

Esta flag fornece uma visão geral rápida das imagens necessárias para o seu projeto Docker Compose.

Resumo

Neste laboratório, você aprendeu como instalar o Docker Compose baixando o binário e concedendo permissões de execução, e verificou a instalação verificando a versão. Em seguida, você criou um arquivo docker-compose.yml básico, definindo um serviço web simples usando a imagem Nginx. Por fim, você usou o comando docker-compose config para validar a sintaxe do arquivo compose, garantindo que ele esteja formatado corretamente antes da implantação.