version: "2.2"

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

      CUBEJS_DB_HOST: host.docker.internal
      CUBEJS_DB_PORT: ${CUBEJS_DB_PORT:-5432}
      CUBEJS_DB_NAME: ${CUBEJS_DB_NAME:-test}
      CUBEJS_DB_USER: ${CUBEJS_DB_USER:-test}
      CUBEJS_DB_PASS: ${CUBEJS_DB_PASS:-test}

      CUBEJS_DB_HOST2: host.docker.internal
      CUBEJS_DB_PORT2: ${CUBEJS_DB_PORT2:-3306}
      CUBEJS_DB_NAME2: ${CUBEJS_DB_NAME2:-mysql}
      CUBEJS_DB_USER2: ${CUBEJS_DB_USER2:-root}
      CUBEJS_DB_PASS2: ${CUBEJS_DB_PASS2:-Test1test}

      CUBEJS_DEV_MODE: "true"
      CUBEJS_WEB_SOCKETS: "true"
      CUBEJS_API_SECRET: mysupersecret
      CUBEJS_SCHEMA_PATH: schema
    volumes:
      - ./multidb/cube.js:/cube/conf/cube.js
      - ./multidb/schema:/cube/conf/schema
    ports:
      - "4000: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: postgres:13
    environment:
      - POSTGRES_PASSWORD=test
      - POSTGRES_USER=test
      - POSTGRES_DB=test
    ports:
      - "5432"
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U test"]
      interval: 10s
      timeout: 5s
      retries: 5

  db2:
    container_name: birdbox-db2
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    environment:
      - MYSQL_ROOT_PASSWORD=Test1test
    ports:
      - "3306:3306"
    restart: always
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      interval: 10s
      timeout: 5s
      retries: 5