version: "2.2"

services:
  cube:
    container_name: birdbox-cube
    image: ${BIRDBOX_CUBEJS_REGISTRY_PATH}cubejs/cube:${BIRDBOX_CUBEJS_VERSION:-latest}
    environment:
      CUBEJS_DB_TYPE: materialize

      CUBEJS_DB_HOST: host.docker.internal
      CUBEJS_DB_PORT: ${CUBEJS_DB_PORT:-6875}
      CUBEJS_DB_NAME: ${CUBEJS_DB_NAME:-materialize}
      CUBEJS_DB_USER: ${CUBEJS_DB_USER:-materialize}
      CUBEJS_DB_PASS: ${CUBEJS_DB_PASS:-materialize}

      CUBEJS_DEV_MODE: "true"
      CUBEJS_WEB_SOCKETS: "true"
      CUBEJS_API_SECRET: mysupersecret
      CUBEJS_SCHEMA_PATH: schema
    volumes:
      - ./questdb/schema:/cube/conf/schema
    ports:
      - "4000"
    restart: always

  # Database instances, for troubleshooting.
  # NOT required.
  # Tests provide db instances via testcontainers, in both LOCAL and DOCKER modes.

  db:
    container_name: birdbox-db
    image: questdb/questdb:6.2.1
    ports:
      - "8812"
      - "9000"
      - "9003"
    restart: always
    volumes:
      - ./datasets:/data:ro
      - ./questdb/scripts:/scripts:ro
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://127.0.0.1:9003 || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 5
