# ============================================================================== # MERICA STANDALONE APPLIANCE — DOCKER COMPOSE CONFIGURATION # ============================================================================== # Clean, ultra-lightweight standalone container running strictly MERICA: # - Unified Nginx Reverse Proxy + ReactFlow Canvas UI + FastAPI Modular Backend # - Port: 14000 (Internal loopback 127.0.0.1:8000) # - Zero Airflow containers inside (Connects to your External Airflow cluster) # - Zero PostgreSQL MetaDB inside (Connects to your External Lakehouse DB) # - Pre-seeded Starter Pipelines mounted to guarantee DAGs list appears instantly # ============================================================================== version: "3.8" services: merica: build: . image: ${MERICA_IMAGE:-registry.sicabe.com/merica:1.0.0} container_name: merica-appliance restart: always ports: - "${MERICA_PORT:-14000}:80" extra_hosts: - "host.docker.internal:host-gateway" environment: # 1. External Apache Airflow Connectivity - AIRFLOW_WEB_URL=${AIRFLOW_WEB_URL:-http://host.docker.internal:14080} - AIRFLOW_API_URL=${AIRFLOW_API_URL:-http://host.docker.internal:14080} # 2. Pipeline SSOT Directories (Mounted Starter / Git Repository) - AIRFLOW_CONFIGS_DIR=/app/merica-pipelines/configs - AIRFLOW_METADATA_DIR=/app/merica-pipelines/metadata - AIRFLOW_DBT_DIR=/app/merica-pipelines/dbt # 3. External PostgreSQL Database (Introspection & Airflow MetaDB) - POSTGRES_HOST=${POSTGRES_HOST:-host.docker.internal} - POSTGRES_PORT=${POSTGRES_PORT:-14432} - POSTGRES_DB=${POSTGRES_DB:-dlh_lakehouse} - POSTGRES_USER=${POSTGRES_USER:-dlh_user} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-dlh_password} # 4. Storage & MinIO S3 Lakehouse (Optional External) - MINIO_ENDPOINT=${MINIO_ENDPOINT:-host.docker.internal:14096} - MINIO_ROOT_USER=${MINIO_ROOT_USER:-minio_admin} - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-minio_password} # 5. Security & Authentication - SECRET_KEY=${SECRET_KEY:-merica-secret-key-dlh-12345678901234567890123456789012} - MERICA_ADMIN_USERNAME=${MERICA_ADMIN_USERNAME:-admin} - MERICA_ADMIN_PASSWORD=${MERICA_ADMIN_PASSWORD:-admin} # 6. External Keycloak IAM & SSO (Optional) - KEYCLOAK_URL=${KEYCLOAK_URL:-http://host.docker.internal:14180} - KEYCLOAK_REALM=${KEYCLOAK_REALM:-merica} - KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-merica-app} # 7. Metadata Governance (Optional OpenMetadata) - OPENMETADATA_HOST=${OPENMETADATA_HOST:-http://host.docker.internal:14585} - OPENMETADATA_JWT_TOKEN=${OPENMETADATA_JWT_TOKEN:-} - ENABLE_OPENMETADATA_SYNC=${ENABLE_OPENMETADATA_SYNC:-false} - GOVERNANCE_DOMAIN=${GOVERNANCE_DOMAIN:-Lingkungan Hidup & Kehutanan} - GOVERNANCE_OWNER_TEAM=${GOVERNANCE_OWNER_TEAM:-de_team_dlh} - GOVERNANCE_OWNER_NAME=${GOVERNANCE_OWNER_NAME:-Data Engineering DLH} - GOVERNANCE_TIER=${GOVERNANCE_TIER:-Tier.Tier1} - GOVERNANCE_CERTIFICATION=${GOVERNANCE_CERTIFICATION:-Certification.Gold} volumes: # PENTING: Mount folder pipeline starter / Git SSOT agar DAGs list langsung muncul - ${PIPELINES_DIR:-./pipelines}:/app/merica-pipelines - merica_storage:/app/storage - merica_data:/app/data volumes: merica_storage: merica_data: