GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo usar los perfiles de servicio para simplificar las pilas en Docker Compose

Docker Compose ahora admite perfiles para el uso selectivo de servicios. Servicios en su docker-compose.yml se puede vincular a uno o más perfiles con nombre. Pasar un nombre de perfil a docker-compose up iniciará solo los servicios en ese perfil, permitiéndole crear variantes de su pila para configuraciones y entornos específicos.

Compose se ha centrado anteriormente en definir una sola pila que es una distribución canónica de su aplicación. Los perfiles agregan más espacio para personalizar qué partes de la pila usar, lo que hace que los conjuntos complejos de servicios sean más modulares y configurables.

¿Por qué usar perfiles?

El uso de perfiles es completamente opcional. Sus archivos existentes de Docker Compose seguirán funcionando y no es necesario adoptar perfiles de inmediato.

Los perfiles de servicio resuelven varias frustraciones comunes con los flujos de prueba y desarrollo de Docker Compose. Es posible que tenga servicios que solo quiera usar en el desarrollo, como un contenedor de depuración o un servicio de registro. Cuando está en producción, no necesita esos servicios y quiere evitar iniciarlos.

Anteriormente, lograr esto requería dividir las definiciones de servicio en varios archivos. Entonces necesitaría un up difícil de manejar comando para iniciar todo en desarrollo:

# docker-compose.yml
version: "3"
services:
  app:
    image: my-app:latest
 
# docker-compose-dev.yml
version: "3"
services:
  debug:
    image: my-app-debug:latest
# start in production
docker-compose up -d

# start in development
docker-compose -f docker-compose.yml -f docker-compose-dev.yml up -d

Los perfiles le permiten combinar ambas definiciones de servicio en un solo archivo. Puede usar una bandera o una variable de entorno para seleccionar un perfil específico, sin tener que escribir manualmente las rutas de los archivos. Esto crea una experiencia más conveniente que es menos complicada de documentar, escribir y ejecutar.

Definiendo Perfiles

Los perfiles se crean configurando los profiles campo de servicios en su docker-compose.yml . Los perfiles se especifican como una lista. A cada servicio se le puede dar uno o varios perfiles.

version: "3"
services:
  app:
    image: my-app:latest
  debug:
    image: my-app-debug:latest
    profiles:
      - dev

Las instancias de perfil se crean implícitamente a partir de los nombres dados a sus profiles los campos. Los servicios que comparten un perfil se unen automáticamente.

Para iniciar los servicios incluidos en un perfil, agregue el --profile marcar para docker-compose up :

docker-compose up --profile dev

Este comando iniciaría tanto la app y debug servicios del archivo Compose anterior. Si ejecutó docker-compose up , omitiendo el --profile marca, solo la app el servicio comenzaría.

Puede iniciar varios perfiles simultáneamente repitiendo --profile bandera. Compose también es compatible con COMPOSE_PROFILES variable de entorno como alternativa a --profile . Esto acepta una lista de nombres de perfil separados por comas.

Servicios sin profiles el campo siempre se iniciará, independientemente de cualquier perfil solicitado. Una vez que se le ha dado un perfil a un servicio, solo se iniciará si ese perfil ha sido solicitado. Para servicios con múltiples perfiles, solicitar cualquiera de ellos permitirá que se inicie el servicio.

Inicios de perfil implícito

Los perfiles siempre se ignorarán si inicia manualmente un servicio usando docker-compose run . En este caso, Compose también iniciará cualquier servicio del que dependa el servicio solicitado, si comparten un perfil o no tienen un perfil asignado.

Aquí, ejecutando docker-compose run debug iniciaría debug-utils servicio, aunque el dev el perfil no se ha seleccionado explícitamente:

version: "3"
services:
  app:
    image: my-app:latest
  debug-utils:
    image: my-app-debug-utils:latest
    profiles:
      - dev
  debug:
    image: my-app-debug:latest
    depends_on: debug-utils
    profiles:
      - dev

Los inicios implícitos solo se aplican a los dependientes directos del servicio especificado. Si debug-utils también tenía un depends_on , y ese servicio no compartió el dev perfil, no se iniciaría correctamente.

Para que la resolución de dependencia funcione correctamente con docker-compose run , todos los servicios del árbol deben compartir un perfil del servicio superior o estar habilitados de forma permanente. Si ninguna de esas condiciones se cumple, deberá agregar el --profile marcar para activar explícitamente cualquier perfil requerido adicional.

Resumen

Los perfiles de servicio son una característica conveniente de Redactar que facilita la administración de diferentes combinaciones de servicios. Al usar perfiles, puede evitar dividir los servicios en varios archivos de Compose. Agregando --profile por lo general, se siente más natural que fusionar varios archivos YAML.

Los perfiles le permiten crear subpilas dentro de su aplicación Compose principal. Su introducción como parte de la especificación Compose es un reconocimiento de que las pilas en desarrollo a menudo incorporan servicios adicionales más allá de los que se usan en producción.

En términos más generales, los perfiles hacen que Compose sea más versátil al facilitar la personalización de la pila. Si bien se concibió como un enfoque para la gestión ambiental, los perfiles también podrían ayudar a la comunidad a crear diferentes variaciones de imágenes populares. Piense en un WordPress docker-compose.yml con mysql y mariadb perfiles:ahora puede cambiar fácilmente entre los servicios de base de datos preconfigurados para seleccionar el motor que coincida con su preferencia.

Docker Compose 1.28 introdujo perfiles a principios de este año. Siempre que tenga una versión reciente del binario Compose o Docker Desktop para Windows y Mac, puede agregar profiles a sus archivos Compose para comenzar a habilitar servicios de forma selectiva.


Docker
  1. Cómo usar el comando Systemctl para administrar los servicios de Systemd

  2. Cómo usar un Dockerfile para crear una imagen de Docker

  3. Cómo usar los perfiles de servicio para simplificar las pilas en Docker Compose

  4. Cómo instalar y usar Docker Compose en CentOS

  5. Cómo configurar docker para usar proxy

Cómo instalar y usar Docker Compose en Ubuntu 22.04

Cómo instalar y usar Docker en Ubuntu 22.04

¿Qué es Docker Compose y cómo se usa?

Cómo implementar pilas de Docker Compose en Kubernetes con Kompose

Cómo instalar Docker Compose en Ubuntu

Cómo instalar y usar Docker Compose en Debian 11