= Docker Ofelia {{tag>docker imagen}} Sustituto de **cron** para contenedores, puede funcionar en modo fichero .ini o labels de docker. No los dos a la vez. * [[https://hub.docker.com/r/mcuadros/ofelia]] * [[https://pkg.go.dev/github.com/robfig/cron?utm_source=godoc]] == Parámetros config.ini Parámetros de Control y Notificaciones (Válidos en ambos tipos) Puedes añadir estos parámetros en cualquier sección para **sobrescribir los ajustes globales** solo para ese trabajo en concreto: | Parámetro | Descripción / Ejemplo | | --- | --- | | `email-to` | Envía los fallos de esta tarea a una dirección específica en lugar de la global.

`email-to = dev-team@dominio.com` | | `no-error-mail` | Si se establece en `true`, **desactiva** el envío de correos si esta tarea falla.

`no-error-mail = true` | | `slack-webhook` | Envía alertas de esta tarea a un Webhook de Slack concreto.

`slack-webhook = [https://hooks.slack.com/](https://hooks.slack.com/)...` | | `save-folder` | Ruta del host donde Ofelia guardará un archivo de texto con el log completo de la ejecución.

`save-folder = /var/log/ofelia` | | `overlap` | Controla si se permite ejecutar la tarea si la anterior ejecución **aún no ha terminado**.

`overlap = false` *(por defecto `true`, si se pone `false` omite el inicio hasta que finalice el previo)* | === job-run `job-run` crea un contenedor nuevo a partir de una imagen, ejecuta el comando y lo destruye al terminar. | Parámetro | Requerido | Descripción / Ejemplo | | --- | --- | --- | | `schedule` | **Sí** | Expresión Cron de 6 campos o sintaxis `@every`.

`schedule = 0 0 1 * * *` o `@every 1h` | | `image` | **Sí** | Nombre de la imagen de Docker a utilizar.

`image = fidmag/python:3.5.3` | | `command` | **Sí** | Comando o script que ejecutará la imagen.

`command = python script.py` | | `volume` | No | Rutas o volúmenes a montar. Se puede repetir para múltiples volúmenes.

`volume = /app/host:/app:ro` | | `environment` | No | Inyecta variables de entorno al contenedor.

`environment = "VAR1=valor" "VAR2=123"` | | `network` | No | Red de Docker a la que conectar el contenedor efímero.

`network = mi_red_custom` | | `user` | No | Usuario/UID con el que se ejecuta el proceso dentro del contenedor.

`user = "1000:1000"` o `user = "www-data"` | | `dir` | No | Directorio de trabajo (*working directory*) dentro del contenedor.

`dir = /app` | | `tty` | No | Asigna un pseudo-TTY (`true`/`false`). Útil si el comando requiere terminal.

`tty = true` | | `delete-on-completion` | No | Elimina el contenedor al terminar (equivale a `--rm`). Por defecto es `true`.

`delete-on-completion = true` | === job-exec `job-exec` lanza un comando (`docker exec`) dentro de un contenedor que ya está activo en el sistema. | Parámetro | Requerido | Descripción / Ejemplo | | --- | --- | --- | | `schedule` | **Sí** | Expresión Cron de 6 campos o sintaxis `@every`.

`schedule = 0 30 * * * *` | | `container` | **Sí** | Nombre exacto (`container_name`) o ID del contenedor destino.

`container = mi_app_python` | | `command` | **Sí** | Comando a ejecutar dentro del contenedor activo.

`command = python /app/backup.py` | | `user` | No | Usuario dentro del contenedor con el que ejecutar el comando.

`user = "root"` | | `dir` | No | Directorio desde el que se ejecutará el comando.

`dir = /var/www/html` | | `tty` | No | Asigna un pseudo-TTY para la ejecución (`true`/`false`).

`tty = true` |