Usar servicios de proveedores
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:
- Definir un servicio con el atributo
provider - Especificar el tipo (
type) de proveedor que deseas utilizar - Configurar cualquier opción específica del proveedor
- 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:
- databaseObserva 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_URLcon la URL para acceder al recurso aprovisionadoDATABASE_TOKENcon 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:
- A Docker CLI plugin (e.g.,
docker-model) - A binary available in the user's PATH
- 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-modelEl plugin o binario es responsable de:
- Interpretar las opciones proporcionadas en el servicio del proveedor
- Aprovisionar la capacidad solicitada
- Devolver información sobre cómo acceder al recurso aprovisionado
Esta información se pasa luego a los servicios dependientes como variables de entorno.
TipSi 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:
- Configuración simplificada: no necesitas configurar ni gestionar manualmente las capacidades de la plataforma
- Enfoque declarativo: puedes declarar todas las dependencias de tu aplicación en un solo lugar
- 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.