services: clickhouse: image: clickhouse/clickhouse-server:24.4.1 container_name: clickhouse environment: CLICKHOUSE_PASSWORD: ${OPENLIT_DB_PASSWORD:-OPENLIT} CLICKHOUSE_USER: ${OPENLIT_DB_USER:-default} CLICKHOUSE_DATABASE: ${OPENLIT_DB_NAME:-openlit} CLICKHOUSE_ALWAYS_RUN_INITDB_SCRIPTS: true volumes: - clickhouse-data:/var/lib/clickhouse - ./assets/clickhouse-config.xml:/etc/clickhouse-server/config.d/custom-config.xml:ro - ./assets/clickhouse-init.sh:/docker-entrypoint-initdb.d/init.sh:ro ports: - "9000:9000" - "8123:8123" healthcheck: test: ["CMD-SHELL", "clickhouse-client --user=$${CLICKHOUSE_USER} --password=$${CLICKHOUSE_PASSWORD} --query='SELECT 1' || exit 1"] interval: 5s timeout: 3s retries: 10 start_period: 100s restart: always openlit: image: ghcr.io/openlit/openlit:latest container_name: openlit environment: TELEMETRY_ENABLED: "true" INIT_DB_HOST: clickhouse INIT_DB_PORT: 8123 INIT_DB_DATABASE: ${OPENLIT_DB_NAME:-openlit} INIT_DB_USERNAME: ${OPENLIT_DB_USER:-default} INIT_DB_PASSWORD: ${OPENLIT_DB_PASSWORD:-OPENLIT} SQLITE_DATABASE_URL: file:/app/client/data/data.db PORT: ${PORT:-3000} DOCKER_PORT: ${PORT:-3000} # OAuth Environment Variables GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID:-} GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET:-} GITHUB_CLIENT_ID: ${GITHUB_CLIENT_ID:-} GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET:-} # TLS Configuration (user-configurable) OPAMP_ENVIRONMENT: ${OPAMP_ENVIRONMENT:-production} OPAMP_CERTS_DIR: "/app/opamp/certs" OPAMP_TLS_INSECURE_SKIP_VERIFY: ${OPAMP_TLS_INSECURE_SKIP_VERIFY:-false} OPAMP_TLS_REQUIRE_CLIENT_CERT: ${OPAMP_TLS_REQUIRE_CLIENT_CERT:-true} OPAMP_TLS_MIN_VERSION: ${OPAMP_TLS_MIN_VERSION:-1.2} OPAMP_TLS_MAX_VERSION: ${OPAMP_TLS_MAX_VERSION:-1.3} OPAMP_LOG_LEVEL: ${OPAMP_LOG_LEVEL:-info} env_file: - path: .env required: false ports: - "${PORT:-3000}:${DOCKER_PORT:-3000}" - "4317:4317" # OTLP gRPC receiver - "4318:4318" # OTLP HTTP receiver depends_on: clickhouse: condition: service_healthy volumes: - openlit-data:/app/client/data - ./assets/otel-collector-config.yaml:/etc/otel/otel-collector-config.yaml healthcheck: test: ["CMD", "node", "-e", "fetch('http://localhost:3000').then(r=>{process.exit(r.ok?0:1)}).catch(()=>process.exit(1))"] interval: 5s timeout: 3s retries: 10 start_period: 30s restart: always volumes: clickhouse-data: openlit-data: