Elemento de nivel superior configs
Las configuraciones (configs) ayudan a los servicios a adaptar su comportamiento sin necesidad de reconstruir una imagen de Docker. Al igual que con los volúmenes, las configuraciones se montan como archivos en el sistema de archivos de un contenedor. La ubicación del punto de montaje dentro del contenedor de forma predeterminada es /<nombre-de-config> en contenedores Linux y C:\<nombre-de-config> en contenedores Windows.
Los servicios solo pueden acceder a las configuraciones (configs) cuando se les concede explícitamente mediante un atributo configs dentro del elemento de nivel superior services.
De forma predeterminada, la configuración:
- Pertenece al usuario que ejecuta el comando del contenedor, pero la configuración del servicio puede invalidar esto.
- Tiene permisos de lectura universal (modo 0444), a menos que el servicio esté configurado para invalidar esto.
La declaración configs de nivel superior define o hace referencia a datos de configuración que se conceden a los servicios en tu aplicación de Compose. El origen de la configuración es file, environment, content o external.
file: La configuración se crea con el contenido del archivo en la ruta especificada.environment: El contenido de la configuración se crea con el valor de una variable de entorno. Introducido en la versión de Docker Compose 2.23.1.content: El contenido se crea con el valor integrado (inline). Introducido en la versión de Docker Compose 2.23.1.external: Si se establece en true,externalespecifica que esta configuración ya ha sido creada. Compose no intenta crearla, y si no existe, se produce un error.name: El nombre del objeto de configuración en el motor de contenedores que se debe buscar. Este campo se puede usar para hacer referencia a configuraciones que contienen caracteres especiales. El nombre se usa tal cual y no se le añadirá el nombre del proyecto como prefijo.
Ejemplo 1
<project_name>_http_config se crea cuando se despliega la aplicación, registrando el contenido de httpd.conf como los datos de configuración.
configs:
http_config:
file: ./httpd.confAlternativamente, http_config se puede declarar como externo (external). Compose busca http_config para exponer los datos de configuración a los servicios correspondientes.
configs:
http_config:
external: trueEjemplo 2
La búsqueda de configuraciones externas también puede utilizar una clave distinta especificando un name.
El siguiente ejemplo modifica el anterior para buscar una configuración utilizando el parámetro HTTP_CONFIG_KEY. La clave de búsqueda real se establece en el momento del despliegue mediante la interpolación de variables, pero se expone a los contenedores con el ID codificado http_config.
configs:
http_config:
external: true
name: "${HTTP_CONFIG_KEY}"Ejemplo 3
<project_name>_app_config se crea cuando se despliega la aplicación, registrando el contenido integrado (inline) como datos de configuración. Esto significa que Compose infiere las variables al crear la configuración, lo que te permite ajustar el contenido según la configuración del servicio:
configs:
app_config:
content: |
debug=${DEBUG}
spring.application.admin.enabled=${DEBUG}
spring.application.name=${COMPOSE_PROJECT_NAME}Ejemplo 4
<project_name>_simple_config se crea cuando se despliega la aplicación, utilizando el valor de una variable de entorno como datos de configuración. Esto es útil para valores de configuración simples que no requieren interpolación:
configs:
simple_config:
environment: "SIMPLE_CONFIG_VALUE"Si external se establece en true, todos los demás atributos aparte de name son irrelevantes. Si Compose detecta cualquier otro atributo, rechaza el archivo de Compose por no ser válido.