Cómo usar el comando docker compose config para validar y visualizar archivos compose

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás a utilizar el comando docker-compose config para validar y visualizar tus archivos Docker Compose. Comenzaremos instalando Docker Compose y luego crearemos un archivo compose básico.

Posteriormente, usarás el comando docker-compose config para validar la sintaxis del archivo compose, visualizar la configuración resuelta en formatos YAML y JSON, y extraer información específica como nombres de servicios y nombres de imágenes. Este laboratorio te proporcionará habilidades esenciales para trabajar eficientemente con archivos Docker Compose.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-555074{{"Cómo usar el comando docker compose config para validar y visualizar archivos compose"}} docker/ls -.-> lab-555074{{"Cómo usar el comando docker compose config para validar y visualizar archivos compose"}} docker/ps -.-> lab-555074{{"Cómo usar el comando docker compose config para validar y visualizar archivos compose"}} docker/images -.-> lab-555074{{"Cómo usar el comando docker compose config para validar y visualizar archivos compose"}} docker/info -.-> lab-555074{{"Cómo usar el comando docker compose config para validar y visualizar archivos compose"}} docker/version -.-> lab-555074{{"Cómo usar el comando docker compose config para validar y visualizar archivos compose"}} docker/build -.-> lab-555074{{"Cómo usar el comando docker compose config para validar y visualizar archivos compose"}} end

Validar un archivo compose básico

En este paso, aprenderás cómo validar un archivo básico de Docker Compose. Antes de comenzar, necesitamos instalar Docker Compose ya que no viene preinstalado en este entorno.

Primero, descargaremos el binario de Docker Compose. Utilizaremos la versión 1.29.2, que es una versión estable y ampliamente 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 descarga el binario de Docker Compose desde el repositorio oficial de GitHub y lo guarda en /usr/local/bin/docker-compose. Las partes $(uname -s) y $(uname -m) detectan automáticamente tu sistema operativo y arquitectura para descargar el binario correcto.

A continuación, debemos dar permisos de ejecución al binario descargado.

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

Este comando hace que el comando docker-compose sea ejecutable.

Ahora, verifiquemos la instalación comprobando la versión.

docker-compose --version

Deberías ver una salida similar a docker-compose version 1.29.2, build 5becea4c. Esto confirma que Docker Compose está instalado correctamente.

Ahora, creemos un archivo simple de Docker Compose. Crearemos un archivo llamado docker-compose.yml en tu directorio ~/project.

nano ~/project/docker-compose.yml

Agrega el siguiente contenido al archivo:

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

Este es un archivo Docker Compose muy básico. Define un único servicio llamado web que utiliza la imagen nginx:latest y mapea el puerto 80 del host al puerto 80 del contenedor.

Guarda el archivo y sal del editor nano (Presiona Ctrl + X, luego Y, luego Enter).

Antes de ejecutar el archivo compose, es una buena práctica validar su sintaxis. Docker Compose proporciona un comando para esto: config.

docker-compose config

Si la sintaxis de tu archivo docker-compose.yml es correcta, este comando mostrará la configuración resuelta en formato YAML. Si hay errores de sintaxis, imprimirá un mensaje de error indicando el problema. Esto te ayuda a detectar errores temprano antes de intentar construir o ejecutar tus servicios.

Ver la configuración resuelta en formato YAML

En el paso anterior, validamos la sintaxis de nuestro archivo docker-compose.yml usando el comando docker-compose config. Por defecto, este comando muestra la configuración resuelta en formato YAML. Esto es útil para ver la configuración final que Docker Compose utilizará, incluyendo cualquier valor por defecto o fusiones de múltiples archivos compose.

Ejecutemos nuevamente el comando para ver la salida. Asegúrate de estar en el directorio ~/project donde creaste el archivo docker-compose.yml.

cd ~/project
docker-compose config

Deberías ver una salida similar a esta:

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

Observa que la salida incluye la sección build con el context establecido en /home/labex/project. Aunque no definimos explícitamente una sección build en nuestro docker-compose.yml, Docker Compose agrega un contexto de compilación por defecto que es el directorio que contiene el archivo compose. Este es un ejemplo de cómo docker-compose config muestra la configuración resuelta, incluyendo los valores por defecto.

Ver la configuración resuelta en formato YAML es útil para depurar y entender exactamente cómo Docker Compose interpreta tu archivo.

Ver la configuración resuelta en formato JSON

En el paso anterior, vimos cómo docker-compose config muestra por defecto la configuración resuelta en formato YAML. En ocasiones, puede ser útil ver la configuración en formato JSON, especialmente si estás trabajando con herramientas o scripts que procesan JSON.

El comando docker-compose config tiene una bandera --format que te permite especificar el formato de salida. Para obtener la salida en formato JSON, usamos --format json.

Asegúrate de estar en el directorio ~/project.

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

Deberías ver la configuración resuelta impresa en la consola en formato JSON. La salida se verá similar a esto (el formato exacto puede variar ligeramente):

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

Al comparar esta salida con la salida YAML del paso anterior, puedes ver que representa la misma configuración pero en un formato de datos diferente. Ambos formatos son útiles dependiendo de tus necesidades.

Ver la configuración en formato JSON puede ser particularmente útil al integrar Docker Compose con otras herramientas o para el procesamiento programático de la configuración.

Mostrar solo los nombres de los servicios

En este paso, aprenderemos cómo usar el comando docker-compose config para mostrar únicamente los nombres de los servicios definidos en nuestro archivo compose. Esto puede ser útil cuando necesitas una lista rápida de los servicios sin los detalles completos de configuración.

El comando docker-compose config tiene una bandera --services que hace exactamente esto. Analizará el archivo compose y mostrará solo los nombres de los servicios, uno por línea.

Asegúrate de estar en el directorio ~/project.

cd ~/project
docker-compose config --services

Dado que nuestro archivo docker-compose.yml actualmente solo tiene un servicio llamado web, la salida de este comando será:

web

Si tuvieras múltiples servicios definidos en tu archivo compose, cada nombre de servicio se mostraría en una nueva línea. Por ejemplo, si tuvieras servicios llamados web, db y app, la salida sería:

web
db
app

Esta bandera es una forma conveniente de listar rápidamente los servicios definidos en tu proyecto de Docker Compose.

Mostrar solo los nombres de las imágenes

En este último paso, aprenderemos cómo usar el comando docker-compose config para mostrar únicamente los nombres de las imágenes utilizadas por los servicios definidos en nuestro archivo compose. Esto es útil para ver rápidamente de qué imágenes depende tu proyecto.

El comando docker-compose config tiene una bandera --images que realiza esta función. Analizará el archivo compose y mostrará solo los nombres de las imágenes, uno por línea.

Asegúrate de estar en el directorio ~/project.

cd ~/project
docker-compose config --images

Dado que nuestro archivo docker-compose.yml utiliza la imagen nginx:latest para el servicio web, la salida de este comando será:

nginx:latest

Si tuvieras múltiples servicios usando diferentes imágenes, cada nombre de imagen se mostraría en una nueva línea. Por ejemplo, si tuvieras servicios usando nginx:latest, mysql:5.7 y python:3.9, la salida sería:

nginx:latest
mysql:5.7
python:3.9

Esta bandera proporciona una visión rápida de las imágenes requeridas por tu proyecto de Docker Compose.

Resumen

En este laboratorio, aprendiste cómo instalar Docker Compose descargando el binario y otorgando permisos de ejecución, además de verificar la instalación comprobando la versión. Luego creaste un archivo básico docker-compose.yml definiendo un servicio web simple utilizando la imagen de Nginx. Finalmente, usaste el comando docker-compose config para validar la sintaxis del archivo compose, asegurando que esté correctamente formateado antes del despliegue.