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

Aprende a usar perfiles en Docker Compose

Tabla de contenidos

Con los perfiles puedes definir un conjunto de perfiles activos para que el modelo de tu aplicación de Compose se ajuste a diversos usos y entornos.

El elemento de nivel superior services admite un atributo profiles para definir una lista de perfiles con nombre. Los servicios sin un atributo profiles siempre están habilitados.

Compose ignora un servicio cuando ninguno de los profiles listados coincide con los activos, a menos que el servicio sea el objetivo explícito de un comando. En ese caso, su perfil se añade al conjunto de perfiles activos.

Note

Todos los demás elementos de nivel superior no se ven afectados por los profiles y siempre están activos.

Las referencias a otros servicios (mediante links, extends o la sintaxis de recursos compartidos service:xxx) no habilitan automáticamente un componente que de otro modo habría sido ignorado por los perfiles activos. En su lugar, Compose devuelve un error.

Ejemplo ilustrativo

services:
  web:
    image: web_image

  test_lib:
    image: test_lib_image
    profiles:
      - test

  coverage_lib:
    image: coverage_lib_image
    depends_on:
      - test_lib
    profiles:
      - test

  debug_lib:
    image: debug_lib_image
    depends_on:
      - test_lib
    profiles:
      - debug

En el ejemplo anterior:

  • Si el modelo de la aplicación de Compose se analiza sin ningún perfil habilitado, solo contendrá el servicio web.
  • Si el perfil test está habilitado, el modelo contendrá los servicios test_lib y coverage_lib, además del servicio web, que siempre está habilitado.
  • Si el perfil debug está habilitado, el modelo contendrá tanto el servicio web como debug_lib, pero no test_lib ni coverage_lib, por lo que el modelo no será válido respecto a la restricción depends_on de debug_lib.
  • Si los perfiles debug y test están habilitados, el modelo contendrá todos los servicios: web, test_lib, coverage_lib y debug_lib.
  • Si Compose se ejecuta especificando explícitamente test_lib para ejecutarse, tanto test_lib como el perfil test estarán activos, incluso si el perfil test no se ha habilitado.
  • Si Compose se ejecuta especificando explícitamente coverage_lib para ejecutarse, el servicio coverage_lib y el perfil test estarán activos y test_lib se incluirá debido a la restricción depends_on.
  • Si Compose se ejecuta especificando explícitamente debug_lib para ejecutarse, nuevamente el modelo no será válido con respecto a la restricción depends_on de debug_lib, ya que debug_lib y test_lib no tienen profiles comunes listados.
  • Si Compose se ejecuta especificando explícitamente debug_lib para ejecutarse y el perfil test está habilitado, el perfil debug se habilitará automáticamente y el servicio test_lib se incluirá como una dependencia, iniciando ambos servicios (debug_lib y test_lib).

Aprende a usar profiles en Docker Compose.