Docker compose

Si quiero desarrollar una aplicación web, puedo necesitar tener en el sistema:

  • Un servidor web: p.e apache
  • Un intérprete de código: p.e php
  • Un servidor de bases de datos: p.e mysql
    • Una herramienta para gestionar: p.e phpmyadmin

Ante esta situación qué hacemos

* Podría tener un contenedor con todos los servicios.
* Pero vaya lío tener todo en un contenedor
* ¿Podría tener un contenedor con cada servicio?

Qué me va a permtir docker compose
  • Docker compose me va a permitir especificar en un fichero los servicios que necesito
  • Va a crear un contenedor por cada servicio
  • Va a crear una red interna para que dichos servicios se vean entre sí
  • Me va a permitir, mediante comandos poder gestionar todos los servicios de manera individual
  • Todo centralizado en un comando de docker : compose.
  • Evitamos tener que tener varios ficheros Dockerfile y gestionarlos uno por uno para que se ejecuten .
  • La ejecución de docker-compose va a generar contenedores con servicios.

Fichero de configuración

  • Es un fichero llamado docker-compose.yaml o (docker-compose.yml)

    • yaml o yml es un tipo de fichero de declarativo , cuya configuracioń y sintaxis es muy sencilla. yaml viene de YAML Ain’t Markdown Language (Yaml no es un lenguaje de marcado) especificando que no es como XML o HTML:

    * Tiene en cuenta la indentación creando bloques . *Asigno valores a variables utilizando : (dos puntos), debiendo de haber una separación entre los dos puntos y el valor

    • Para crear listas usa los guiones

    Es un fichero muy fácil de entender

Creando el fichero 1.- Vamos a ver la construcción del fichero docker-compose.yaml .
2.- Posteriormente veremos cómo ejecutar el fichero y construir nuestro entorno de desarrollo .

Sintaxis del fichero

El fichero docker-compose va a tener opciones de configuración que podemos jerarquizar

Es un fichero de configuración con formato yaml

Sintaxis YAML (https://es.wikipedia.org/wiki/YAML): La indentación establece la agrupación. Si queremos establecer una lista, usamos guiones Hay que dejar un espacio entre los dos puntos y el valor.

Tema 3: Docker Compose

Docker Compose es una herramienta que permite definir y ejecutar aplicaciones multicontenedor con un archivo de configuración llamado docker-compose.yml.


Introducción a Docker Compose

Docker Compose
Docker Compose es una herramienta que nos permite gestionar sistemas dockerizados, facilitando la configuración y ejecución de aplicaciones multicontenedor de forma sencilla y ordenada, utilizando un único archivo YAML.

Beneficios de Docker Compose


¿Cómo funciona Docker Compose?

Docker Compose utiliza un archivo docker-compose.yml para definir servicios, redes y volúmenes necesarios para una aplicación.

Estructura básica de un archivo docker-compose.yml
services:
    web:
        image: nginx:latest
        ports:
            - "8080:80"
    db:
        image: mysql:5.7
        environment:
            - MYSQL_ROOT_PASSWORD: example
            - MYSQL_DATABASE: test

Sintaxis del archivo YAML

El archivo docker-compose.yml utiliza la sintaxis YAML, la cual es declarativa y fácil de entender.

Ejemplo de sintaxis básica en YAML:

1
2
3
4
5
services:
    web:
        image: nginx:latest
        ports:
            - "8080:80"


Opciones principales del archivo docker-compose.yml

  1. services: Define los contenedores que forman parte de la aplicación.
  2. volumes: Especifica volúmenes para persistir datos.
  3. networks: Configura redes internas para los servicios.

Ejemplo práctico: Servidor web y base de datos

Creamos una configuración para un servidor web con Nginx y una base de datos MySQL.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
services:
web:
    image: php:8.4-apache
    ports:
        - "8080:80"
    
    db:
        image: mysql
        environment:
            - MYSQL_ROOT_PASSWORD: root
            - MYSQL_DATABASE: ejemplo
            - MYSQL_USER: usuario
            - MYSQL_PASSWORD: contraseña

Ejecución:

  1. Levantar los servicios:

    1
    
    docker compose up -d

  2. Verificar contenedores activos:

    1
    
    docker compose ps

  3. Detener los servicios:

    1
    
    docker compose down


Referencias

Documentación oficial

Fuentes de Información