Aprende a usar perfiles en Docker Compose
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.
NoteTodos los demás elementos de nivel superior no se ven afectados por los
profilesy 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:
- debugEn 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
testestá habilitado, el modelo contendrá los serviciostest_libycoverage_lib, además del servicioweb, que siempre está habilitado. - Si el perfil
debugestá habilitado, el modelo contendrá tanto el serviciowebcomodebug_lib, pero notest_libnicoverage_lib, por lo que el modelo no será válido respecto a la restriccióndepends_ondedebug_lib. - Si los perfiles
debugytestestán habilitados, el modelo contendrá todos los servicios:web,test_lib,coverage_libydebug_lib. - Si Compose se ejecuta especificando explícitamente
test_libpara ejecutarse, tantotest_libcomo el perfiltestestarán activos, incluso si el perfiltestno se ha habilitado. - Si Compose se ejecuta especificando explícitamente
coverage_libpara ejecutarse, el serviciocoverage_liby el perfiltestestarán activos ytest_libse incluirá debido a la restriccióndepends_on. - Si Compose se ejecuta especificando explícitamente
debug_libpara ejecutarse, nuevamente el modelo no será válido con respecto a la restriccióndepends_ondedebug_lib, ya quedebug_libytest_libno tienenprofilescomunes listados. - Si Compose se ejecuta especificando explícitamente
debug_libpara ejecutarse y el perfiltestestá habilitado, el perfildebugse habilitará automáticamente y el serviciotest_libse incluirá como una dependencia, iniciando ambos servicios (debug_libytest_lib).
Aprende a usar profiles en
Docker Compose.