From d648b755ba2669aacfd79bcd5b2ef855d45675fc Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Mon, 23 Mar 2026 22:37:53 +0100 Subject: [PATCH 1/3] feat: add Temporal workflow orchestration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Añadido Temporal con PostgreSQL dedicado para orquestación de workflows y transformaciones de datos. Servicios incluidos: - Temporal Server (puerto 7233) - Temporal UI (puerto 3400) - Temporal PostgreSQL (puerto 5435) - Temporal Admin Tools Configuración dinámica en temporal-dynamicconfig/ con features habilitadas para desarrollo. --- docker-compose-temporal.yml | 64 +++++++++++++++++++++ temporal-dynamicconfig/development-sql.yaml | 20 +++++++ 2 files changed, 84 insertions(+) create mode 100644 docker-compose-temporal.yml create mode 100644 temporal-dynamicconfig/development-sql.yaml diff --git a/docker-compose-temporal.yml b/docker-compose-temporal.yml new file mode 100644 index 0000000..4e952f2 --- /dev/null +++ b/docker-compose-temporal.yml @@ -0,0 +1,64 @@ +services: + temporal-postgresql: + image: postgres:15 + container_name: temporal-db + environment: + POSTGRES_USER: temporal + POSTGRES_PASSWORD: temporal + POSTGRES_DB: temporal + ports: + - "5435:5432" + volumes: + - temporal-postgres-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-U", "temporal"] + interval: 5s + timeout: 5s + retries: 5 + restart: unless-stopped + + temporal: + image: temporalio/auto-setup:latest + container_name: temporal + depends_on: + temporal-postgresql: + condition: service_healthy + environment: + - DB=postgres12 + - DB_PORT=5432 + - POSTGRES_USER=temporal + - POSTGRES_PWD=temporal + - POSTGRES_SEEDS=temporal-postgresql + - DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development-sql.yaml + ports: + - "7233:7233" + volumes: + - ./temporal-dynamicconfig:/etc/temporal/config/dynamicconfig + restart: unless-stopped + + temporal-ui: + image: temporalio/ui:latest + container_name: temporal-ui + depends_on: + - temporal + environment: + - TEMPORAL_ADDRESS=temporal:7233 + - TEMPORAL_CORS_ORIGINS=http://localhost:3400 + ports: + - "3400:8080" + restart: unless-stopped + + temporal-admin-tools: + image: temporalio/admin-tools:latest + container_name: temporal-admin-tools + depends_on: + - temporal + environment: + - TEMPORAL_ADDRESS=temporal:7233 + - TEMPORAL_CLI_ADDRESS=temporal:7233 + stdin_open: true + tty: true + restart: unless-stopped + +volumes: + temporal-postgres-data: diff --git a/temporal-dynamicconfig/development-sql.yaml b/temporal-dynamicconfig/development-sql.yaml new file mode 100644 index 0000000..88c0ec6 --- /dev/null +++ b/temporal-dynamicconfig/development-sql.yaml @@ -0,0 +1,20 @@ +# Temporal dynamic configuration for development +system.forceSearchAttributesCacheRefreshOnRead: + - value: true + constraints: {} + +frontend.enableUpdateWorkflowExecution: + - value: true + constraints: {} + +history.enableParentClosePolicyWorker: + - value: true + constraints: {} + +system.enableActivityEagerExecution: + - value: true + constraints: {} + +frontend.enableExecuteMultiOperation: + - value: true + constraints: {} From 6095b7aac8dce5e2cb8dcc0352531c7a608a2f5c Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Mon, 23 Mar 2026 22:38:06 +0100 Subject: [PATCH 2/3] feat: add NATS JetStream message broker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Añadido NATS con JetStream habilitado para streaming de mensajes y comunicación entre microservicios. Configuración: - Puerto 4222: Cliente NATS - Puerto 8222: HTTP Monitoring - Puerto 6222: Clustering - Credenciales: nats/nats123 - JetStream con 23.42 GB RAM y 694 GB storage - Persistencia en volumen nats-data --- docker-compose-nats.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 docker-compose-nats.yml diff --git a/docker-compose-nats.yml b/docker-compose-nats.yml new file mode 100644 index 0000000..3f7d878 --- /dev/null +++ b/docker-compose-nats.yml @@ -0,0 +1,29 @@ +services: + nats: + image: nats:latest + container_name: nats + ports: + - "4222:4222" # NATS client port + - "8222:8222" # HTTP monitoring port + - "6222:6222" # Cluster port + command: + - "-js" # Enable JetStream + - "-sd" # Store directory + - "/data" + - "-m" # Enable monitoring + - "8222" + - "--user" + - "nats" + - "--pass" + - "nats123" + volumes: + - nats-data:/data + restart: unless-stopped + healthcheck: + test: ["CMD", "wget", "--spider", "-q", "http://localhost:8222/healthz"] + interval: 10s + timeout: 5s + retries: 3 + +volumes: + nats-data: From c1cad6c5b39038bbac01150d19d87b0c7b851ae2 Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Mon, 23 Mar 2026 22:38:18 +0100 Subject: [PATCH 3/3] feat: add Orchestration and Messaging sections to Homer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Añadidas nuevas secciones en Homer dashboard para los servicios de orquestación y mensajería. Orchestration: - Temporal UI (puerto 3400) - Dagu (puerto 8090) - DAG scheduler nativo en WSL Messaging: - NATS Monitoring (puerto 8222) Actualizados iconos para usar favicon.ico de los servicios correspondientes. --- homer/assets/config.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/homer/assets/config.yml b/homer/assets/config.yml index d897d03..2be6c89 100644 --- a/homer/assets/config.yml +++ b/homer/assets/config.yml @@ -92,6 +92,33 @@ services: url: "http://localhost:3001" target: "_blank" + - name: "Orchestration" + icon: "fas fa-code-branch" + items: + - name: "Temporal UI" + logo: "http://localhost:3400/favicon.ico" + subtitle: "Workflow Orchestration" + tag: "orchestration" + url: "http://localhost:3400" + target: "_blank" + + - name: "Dagu" + logo: "http://localhost:8090/assets/favicon.ico" + subtitle: "DAG Scheduler - Local Scripts" + tag: "orchestration" + url: "http://localhost:8090" + target: "_blank" + + - name: "Messaging" + icon: "fas fa-stream" + items: + - name: "NATS Monitoring" + logo: "https://nats.io/img/logos/nats-icon-color.png" + subtitle: "JetStream Message Broker" + tag: "messaging" + url: "http://localhost:8222" + target: "_blank" + - name: "Databases" icon: "fas fa-database" items: