Compartir comentarios
Las respuestas se generan en base a la documentación.

Usar servicios de proveedores

Requiere: Docker Compose 2.36.0 y posterior

Docker Compose admite servicios de proveedores, los cuales permiten la integración con servicios cuyos ciclos de vida son gestionados por componentes de terceros en lugar de por el propio Compose.
Esta característica te permite definir y utilizar servicios específicos de la plataforma sin necesidad de una configuración manual o una gestión directa del ciclo de vida.

¿Qué son los servicios de proveedores?

Los servicios de proveedores son un tipo especial de servicio en Compose que representa capacidades de la plataforma en lugar de contenedores. Te permiten declarar dependencias sobre características específicas de la plataforma que tu aplicación necesita.

Al definir un servicio de proveedor en tu archivo de Compose, Compose trabaja con la plataforma para aprovisionar y configurar la capacidad solicitada, poniéndola a disposición de los servicios de tu aplicación.

Usar servicios de proveedores

Para usar un servicio de proveedor en tu archivo de Compose, necesitas:

  1. Definir un servicio con el atributo provider
  2. Especificar el tipo (type) de proveedor que deseas utilizar
  3. Configurar cualquier opción específica del proveedor
  4. Declarar dependencias desde los servicios de tu aplicación hacia el servicio del proveedor

Aquí tienes un ejemplo básico:

services:
  database:
    provider:
      type: awesomecloud
      options:
        type: mysql
        foo: bar
  app:
    image: myapp
    depends_on:
      - database

Observa el atributo dedicado provider en el servicio database. Este atributo especifica que el servicio es gestionado por un proveedor y te permite definir opciones específicas para ese tipo de proveedor.

El atributo depends_on en el servicio app especifica que depende del servicio database. Esto significa que el servicio database se iniciará antes que el servicio app, permitiendo que la información del proveedor se inyecte en el servicio app.

Cómo funciona

Durante la ejecución del comando docker compose up, Compose identifica los servicios que dependen de proveedores y trabaja con ellos para aprovisionar las capacidades solicitadas. A continuación, el proveedor completa el modelo de Compose con información sobre cómo acceder al recurso aprovisionado.

Esta información se pasa a los servicios que declaran una dependencia del servicio del proveedor, normalmente a través de variables de entorno. La convención de nomenclatura para estas variables es:

<<PROVIDER_SERVICE_NAME>>_<<VARIABLE_NAME>>

Por ejemplo, si tu servicio de proveedor se llama database, el servicio de tu aplicación podría recibir variables de entorno como:

  • DATABASE_URL con la URL para acceder al recurso aprovisionado
  • DATABASE_TOKEN con un token de autenticación
  • Otras variables específicas del proveedor

Tu aplicación puede utilizar estas variables de entorno para interactuar con el recurso aprovisionado.

Tipos de proveedores

El campo type en un servicio de proveedor hace referencia al nombre de ya sea:

  1. A Docker CLI plugin (e.g., docker-model)
  2. A binary available in the user's PATH
  3. A path to the binary or script to execute

Cuando Compose encuentra un servicio de proveedor, busca un plugin o binario con el nombre especificado para gestionar el aprovisionamiento de la capacidad solicitada.

Por ejemplo, si especificas type: model, Compose buscará un plugin de la CLI de Docker llamado docker-model o un binario llamado model en el PATH.

services:
  ai-runner:
    provider:
      type: model # Busca el plugin docker-model o el binario model
      options:
        model: ai/example-model

El plugin o binario es responsable de:

  1. Interpretar las opciones proporcionadas en el servicio del proveedor
  2. Aprovisionar la capacidad solicitada
  3. Devolver información sobre cómo acceder al recurso aprovisionado

Esta información se pasa luego a los servicios dependientes como variables de entorno.

Tip

Si estás trabajando con modelos de IA en Compose, utiliza en su lugar el elemento de nivel superior models.

Ventajas de utilizar servicios de proveedores

El uso de servicios de proveedores en tus aplicaciones de Compose ofrece varias ventajas:

  1. Configuración simplificada: no necesitas configurar ni gestionar manualmente las capacidades de la plataforma
  2. Enfoque declarativo: puedes declarar todas las dependencias de tu aplicación en un solo lugar
  3. Flujo de trabajo consistente: utilizas los mismos comandos de Compose para gestionar toda tu aplicación, incluyendo las capacidades de la plataforma

Crear tu propio proveedor

Si deseas crear tu propio proveedor para extender Compose con capacidades personalizadas, puedes implementar un plugin de Compose que registre tipos de proveedores.

Para obtener información detallada sobre cómo crear e implementar tu propio proveedor, consulta la documentación de extensiones de Compose (Compose Extensions).
Esta guía explica el mecanismo de extensión que te permite añadir nuevos tipos de proveedores a Compose.

Referencia