Estructura del fichero Compose de Docker

Estructura del fichero Compose de Docker.

Es fichero YAML (.YML) dispone de los siguientes nodos:

  • version: '<numero_version>' indica la versión de fichero utilizado. Para poder utilizar stacks es necesario mínimo versión 3.
  • services indica los servicios contenerizados que se van a ejecutar
    • <nombre_servicio> indica el nombre del servicio contenerizado
      • image: '<nombre_imagen>' indica el nombre de la imagen asociada al servicio. Si se utiliza junto con build, indica el nombre que tomará la imagen resultante del proceso de construcción.
      • secrets: necesita una versión de fichero al menos 3.1. Es el nodo que contiene los secretos que se utilizarán dentro del servicio. Los nodos hijo contienen el nombre de los secretos que se definirán en el nodo raiz secrets (ver más abajo). Si se está trabajando en un swarm, los secrets se encuentran protegidos en la base de datos Raft. Si se está trabajando con docker-compose, el almacenamiento no está securizado.
      • healthcheck: (mínimo versión 2.1 del fichero) indica cómo se debe ejecutar el comando de comprobación del estado del contenedor (healthcheck)
        • test: ["comando","parametro1","parametro2"...] indica el comando a ejecutar y sus parámetros. Por ejemplo: ["CMD","curl","-f","http://localhost"].
        • interval: <duration> tiempo entre comprobaciones
        • timeout: <duration> tiempo para dar la comprobación como erronea
        • retries: <duration> número de reintentos
        • start_period: <duration> tiempo de espera hasta la primera comprobación
      • build: [<ruta>] indica que el servicio se basará en la construcción del Dockerfile indicado en <ruta>. Se ignora en caso de usar stacks. Puede no especificarse , lo cual permitirá añadir otros datos más específicos:
        • context: <ruta> indica la ruta en la que se encuentran los ficheros necesarios para el contexto de la imagen
        • dockerfile: <nombrefichero> indica el nombre del fichero Dockerfile que se utilizará para la construcción.
      • ports: "<puerto_host>:<puerto_contenedor>" permite mapear <puerto_host> a <puerto_contenedor>. Pueden asignarse varios mapeos, como un array YAML (antepone - a cada item)
      • volumes: <mapeo> permite mapear elementos del sistema de archivos del interior del contenedor con elementos del sistema de archivos en el exterior. Pueden asignarse varios mapeos como un array YAML (antepone - a cada item)
        • <mapeo> tiene la forma [<carpeta_externa>:]<carpeta_interna>, donde:
          • Si solo se especifica <carpeta_interna>, entonces Docker utilizará directamente la carpeta que se encuentra dentro del contenedor cuando se haga referencia a la misma.
          • Si se especifica además, Docker mapeará <carpeta_interna> a <carpeta_externa> cuando se haga referencia a <carpeta_interna>.
      • command: <comando> ejecuta al finalizar la carga del contenedor, sobreescribiendo el comando originalmente configurado. Es un objeto de tipo array, que contiene un primer elemento que se identificará como el comando a ejecutar, y todos los sucesivos elementos serán los parámetros a pasar a dicho comando. Por ejemplo, si en línea de comando quisiésemos ejecutar npm start para arrancar Node, <comando> tendría el valor ["npm","start"].
      • restart: <condicion> indica el comportamiento que debe tener el contenedor en caso de finalización del mismo. Los valores de <condicion> pueden ser:
        • 'no': el contenedor no se reiniciará. Este es el comportamiento por defecto.
        • always: siempre intenta reiniciar el contenedor, independientemente del motivo por el que su ejecución haya finalizado
        • on-failure: sólo reinicia el contenedor en caso de haberse detenido por un error. Se considera que el contenedor ha finalizado con error cuando el código de salida (exit code) de su proceso principal es mayor que 0.
        • unless-stopped: siempre se reinicia hasta que nosotros como desarrolladores forcemos su cierre, mediante un docker stop por ejemplo.
      • networks: indica la lista de redes docker network a la que se conecta
      • deploy: indica las acciones a realizar en el deploy de stacks. Se ignora cuando se utiliza docker-compose.
        • replicas: <numero> indica el número de réplicas a desplegar
        • labels: <array>: permite especificar un array de etiquetas para el contenedor
        • update_config: permite añadir información de configuración
          • parallelism: <numero> grado de paralelismo
          • delay: <numero><unidad_tiempo> indica el tiempo a esperar entre replicas. Por ejemplo: 10s especifica 10 segundos
        • restart_policy: política de reinicios
          • condition: <condicion> condición por la cual se debe reiniciar el contenedor. condicion puede ser:
            • on-failure: únicamente en caso de fallo
          • max_attempts: <numero> especifica el numero máximo de reintentos en caso de error
          • delay: <numero><unidad_tiempo> indica el tiempo a esperar entre reintentos. Por ejemplo: 10s especifica 10 segundos
        • placement: permite especificar cuestiones relativas a dónde lanzar los contenedores, por ejemplo, en nodos de tipología concreta
          • constraints: <array>: conjunto de restricciones
  • secrets: necesita una versión de fichero al menos 3.1. Permite configurar los secretos para el stack o compose
    • <nombre_secret> indica el nombre del secret, que se referencia más arriba dependiendo del nodo services.
      • file: <ruta_y_nombre_fichero> especifica el fichero que contiene el secret
      • external: true indica que es un secret creado previamente en Docker Swarm.

Docker

No hay comentarios en “Estructura del fichero compose de Docker”

Deje su comentario

En respuesta a Some User

Artículos Destacados

phpinfo() es una función de PHP que proporciona información detallada sobre la configuración y el estado...
mysql_secure_installation es un script que se ejecuta en la línea de comandos para mejorar la seguridad de...
Agregar autenticación de usuario y contraseña a Elasticsearch es un proceso importante para proteger los...