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 contenerizadoimage: '<nombre_imagen>'
indica el nombre de la imagen asociada al servicio. Si se utiliza junto conbuild
, 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 raizsecrets
(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 comprobacionestimeout: <duration>
tiempo para dar la comprobación como erronearetries: <duration>
número de reintentosstart_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 imagendockerfile: <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>
.
- Si solo se especifica
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 ejecutarnpm 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 finalizadoon-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 undocker stop
por ejemplo.
networks:
indica la lista de redesdocker network
a la que se conectadeploy:
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 desplegarlabels: <array>
: permite especificar un array de etiquetas para el contenedorupdate_config:
permite añadir información de configuraciónparallelism: <numero>
grado de paralelismodelay: <numero><unidad_tiempo>
indica el tiempo a esperar entre replicas. Por ejemplo:10s
especifica 10 segundos
restart_policy:
política de reinicioscondition: <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 errordelay: <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 concretaconstraints: <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 nodoservices
.file: <ruta_y_nombre_fichero>
especifica el fichero que contiene el secretexternal: true
indica que es un secret creado previamente en Docker Swarm.
Deje su comentario