# 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`](/reference/compose-file/configs/services/#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](https://github.com/docker/compose/releases/tag/v2.23.1).
- `content`: El contenido se crea con el valor integrado (inline). Introducido en la versión de Docker Compose [2.23.1](https://github.com/docker/compose/releases/tag/v2.23.1).
- `external`: Si se establece en true, `external` especifica 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.

```yml
configs:
  http_config:
    file: ./httpd.conf
```

Alternativamente, `http_config` se puede declarar como externo (external). Compose busca `http_config` para exponer los datos de configuración a los servicios correspondientes.

```yml
configs:
  http_config:
    external: true
```

## Ejemplo 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](/reference/compose-file/configs/interpolation/) de variables, pero se expone a los contenedores con el ID codificado `http_config`.

```yml
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:

```yml
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:

```yml
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.

