commit 3a068b0e3fe87a1e5a0a0507dc001f8c904cd621 Author: Egutierrez Date: Mon Mar 23 21:41:12 2026 +0100 Initial commit: Docker services stack Stack completo de servicios Docker incluyendo: - Homer dashboard para gestión de servicios - Marquez/OpenLineage para lineage de datos - Metabase/Rill analytics para análisis - PostgreSQL/ClickHouse databases - Configuraciones de Homer y Marquez Co-Authored-By: Claude Sonnet 4.5 diff --git a/docker-compose-analytics.yml b/docker-compose-analytics.yml new file mode 100644 index 0000000..139606a --- /dev/null +++ b/docker-compose-analytics.yml @@ -0,0 +1,43 @@ +services: + metabase-db: + image: postgres:15 + container_name: metabase-db + environment: + - POSTGRES_USER=metabase + - POSTGRES_PASSWORD=metabase + - POSTGRES_DB=metabase + volumes: + - metabase-data:/var/lib/postgresql/data + restart: unless-stopped + + metabase: + image: metabase/metabase:latest + container_name: metabase + ports: + - "3200:3000" + environment: + - MB_DB_TYPE=postgres + - MB_DB_DBNAME=metabase + - MB_DB_PORT=5432 + - MB_DB_USER=metabase + - MB_DB_PASS=metabase + - MB_DB_HOST=metabase-db + depends_on: + - metabase-db + restart: unless-stopped + + rill: + image: rilldata/rill:latest + container_name: rill + ports: + - "9009:9009" + volumes: + - ./rill-data:/rill + working_dir: /rill + environment: + - RILL_ADMIN_URL=http://localhost:9009 + command: start + restart: unless-stopped + +volumes: + metabase-data: diff --git a/docker-compose-databases.yml b/docker-compose-databases.yml new file mode 100644 index 0000000..6ffbd6f --- /dev/null +++ b/docker-compose-databases.yml @@ -0,0 +1,62 @@ +services: + postgres-main: + image: postgres:15 + container_name: postgres-main + ports: + - "5434:5432" + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + volumes: + - postgres-main-data:/var/lib/postgresql/data + restart: unless-stopped + + clickhouse: + image: clickhouse/clickhouse-server:latest + container_name: clickhouse + ports: + - "8123:8123" + - "9000:9000" + environment: + CLICKHOUSE_DB: default + CLICKHOUSE_USER: default + CLICKHOUSE_PASSWORD: clickhouse + CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1 + volumes: + - clickhouse-data:/var/lib/clickhouse + - clickhouse-logs:/var/log/clickhouse-server + ulimits: + nofile: + soft: 262144 + hard: 262144 + restart: unless-stopped + + dbgate: + image: dbgate/dbgate:latest + container_name: dbgate + ports: + - "3300:3000" + environment: + CONNECTIONS: "con1,con2" + LABEL_con1: PostgreSQL + SERVER_con1: postgres-main + USER_con1: postgres + PASSWORD_con1: postgres + PORT_con1: 5432 + ENGINE_con1: postgres@dbgate-plugin-postgres + LABEL_con2: ClickHouse + SERVER_con2: clickhouse + USER_con2: default + PASSWORD_con2: clickhouse + PORT_con2: 8123 + ENGINE_con2: clickhouse@dbgate-plugin-clickhouse + depends_on: + - postgres-main + - clickhouse + restart: unless-stopped + +volumes: + postgres-main-data: + clickhouse-data: + clickhouse-logs: diff --git a/docker-compose-marquez.yml b/docker-compose-marquez.yml new file mode 100644 index 0000000..c04ff9a --- /dev/null +++ b/docker-compose-marquez.yml @@ -0,0 +1,50 @@ +services: + postgres: + image: postgres:15 + container_name: marquez-db + ports: + - "5433:5432" + environment: + POSTGRES_USER: marquez + POSTGRES_PASSWORD: marquez + POSTGRES_DB: marquez + volumes: + - postgres-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-U", "marquez"] + interval: 5s + timeout: 5s + retries: 5 + + marquez: + image: marquezproject/marquez:latest + container_name: marquez + ports: + - "5000:5000" + - "5001:5001" + environment: + POSTGRES_HOST: postgres + POSTGRES_PORT: 5432 + POSTGRES_DB: marquez + POSTGRES_USER: marquez + POSTGRES_PASSWORD: marquez + MARQUEZ_PORT: 5000 + MARQUEZ_ADMIN_PORT: 5001 + depends_on: + postgres: + condition: service_healthy + + marquez-web: + image: marquezproject/marquez-web:latest + container_name: marquez-web + ports: + - "3001:3000" + environment: + MARQUEZ_HOST: marquez + MARQUEZ_PORT: 5000 + WEB_PORT: 3000 + depends_on: + - marquez + +volumes: + postgres-data: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..bbfc61c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +services: + homer: + image: b4bz/homer:latest + container_name: homer + ports: + - "8080:8080" + volumes: + - ./homer/assets:/www/assets + environment: + - UID=1000 + - GID=1000 + restart: unless-stopped diff --git a/homer/assets/config.yml b/homer/assets/config.yml new file mode 100644 index 0000000..d897d03 --- /dev/null +++ b/homer/assets/config.yml @@ -0,0 +1,103 @@ +--- +title: "Dashboard" +subtitle: "Homer" +logo: "assets/logo.png" + +header: true +footer: false + +columns: "auto" + +theme: default + +colors: + light: + highlight-primary: "#3367d6" + highlight-secondary: "#4285f4" + highlight-hover: "#5a95f5" + background: "#f5f5f5" + card-background: "#ffffff" + text: "#363636" + text-header: "#ffffff" + text-title: "#303030" + text-subtitle: "#424242" + card-shadow: rgba(0, 0, 0, 0.1) + link: "#3273dc" + link-hover: "#363636" + dark: + highlight-primary: "#3367d6" + highlight-secondary: "#4285f4" + highlight-hover: "#5a95f5" + background: "#131313" + card-background: "#2b2b2b" + text: "#eaeaea" + text-header: "#ffffff" + text-title: "#fafafa" + text-subtitle: "#f5f5f5" + card-shadow: rgba(0, 0, 0, 0.4) + link: "#3273dc" + link-hover: "#ffdd57" + +links: [] + +services: + - name: "Visualization" + icon: "fas fa-chart-bar" + items: + - name: "Grafana" + logo: "http://localhost:3500/public/build/static/img/grafana_icon.1e0deb6b.svg" + subtitle: "Dashboards & Visualization" + tag: "visualization" + url: "http://localhost:3500" + target: "_blank" + + - name: "Metabase" + logo: "https://www.metabase.com/images/logo.svg" + subtitle: "Business Intelligence" + tag: "visualization" + url: "http://localhost:3200" + target: "_blank" + + - name: "Rill" + logo: "http://localhost:9009/favicon.png" + subtitle: "Modern BI Dashboard" + tag: "visualization" + url: "http://localhost:9009" + target: "_blank" + + - name: "Monitoring" + icon: "fas fa-chart-line" + items: + - name: "Alloy UI" + logo: "http://localhost:12345/public/static/media/logo.5d4ad2e6fdb761a51107c6cd8b65c7ff.svg" + subtitle: "Alloy Configuration" + tag: "app" + url: "http://localhost:12345" + target: "_blank" + + - name: "Prometheus UI" + logo: "data:image/svg+xml," + subtitle: "Metrics Database" + tag: "monitoring" + url: "http://localhost:9090" + target: "_blank" + + - name: "Data Lineage" + icon: "fas fa-project-diagram" + items: + - name: "Marquez UI" + logo: "http://localhost:3001/42e36e3d359253b1fc98e9f44cb12c57.svg" + subtitle: "OpenLineage Data Lineage" + tag: "lineage" + url: "http://localhost:3001" + target: "_blank" + + - name: "Databases" + icon: "fas fa-database" + items: + - name: "DBGate" + logo: "http://localhost:3300/logo192.png" + subtitle: "Database Management Tool" + tag: "database" + url: "http://localhost:3300" + target: "_blank" diff --git a/marquez-config/marquez.yml b/marquez-config/marquez.yml new file mode 100644 index 0000000..6421fe7 --- /dev/null +++ b/marquez-config/marquez.yml @@ -0,0 +1,18 @@ +server: + applicationConnectors: + - type: http + port: 5000 + adminConnectors: + - type: http + port: 8081 + +db: + driverClass: org.postgresql.Driver + url: jdbc:postgresql://postgres:5432/marquez + user: marquez + password: marquez + +logging: + level: INFO + appenders: + - type: console diff --git a/rill-data/rill.yaml b/rill-data/rill.yaml new file mode 100755 index 0000000..469f266 --- /dev/null +++ b/rill-data/rill.yaml @@ -0,0 +1,2 @@ +sources: [] +models: [] diff --git a/rill-data/tmp/meta.db b/rill-data/tmp/meta.db new file mode 100644 index 0000000..d91c7ee Binary files /dev/null and b/rill-data/tmp/meta.db differ