services:
  redis:
    image: redis:5.0.6
    ports:
      - 6379:6379
    healthcheck:
      test: ['CMD-SHELL', 'redis-cli ping | grep PONG']
      interval: 5s
      timeout: 5s
      retries: 10
    environment:
      - REDIS_HOST=redis
    volumes:
      - redis-data:/home/redis/data
  service:
    platform: linux/amd64
    build:
      context: .
      target: dev
      args:
        DOCKER_BUILDKIT: 1
      secrets:
        - GITHUB_NPM_TOKEN
    depends_on:
      redis:
        condition: service_healthy
    links:
      - redis
    env_file:
      - .env
    environment:
      - GITHUB_NPM_TOKEN=/run/secrets/GITHUB_NPM_TOKEN
      - ENV=QA
      - PORT=8080
      - NODE_ENV=dev
      - LOG_LEVEL=info
      - DD_TRACE_ENABLED=false
      - ENABLE_JWT_SERVICE_CACHE=false
      - APOLLO_INTROSPECTION=true
      - APOLLO_PLAYGROUND=true
      - NEO4J_URL=neo4j+ssc://qa-neo4j-cluster.theorchard.io:7687
      - NEO4J_USER
      - NEO4J_PASSWORD
      - NEO4J_AURA_URL
      - NEO4J_AURA_USERNAME
      - NEO4J_AURA_PASSWORD
      - ORCHARD_FIREBASE_DOMAIN=open.theorchard.com
      - ORCHARD_FIREBASE_API_KEY
      - AWAL_FIREBASE_DOMAIN=open.awal.com
      - AWAL_FIREBASE_API_KEY
      - SME_FIREBASE_DOMAIN=open-insights.sonymusic.com
      - SME_FIREBASE_API_KEY
      - JOT_URL_USER_NAME
      - JOT_URL_PUBLIC_API_KEY
      - JOT_URL_PRIVATE_API_KEY
      - JOT_URL_PROJECT_ID
      - ORCHARD_JOT_URL_DOMAIN_ID
      - AWAL_JOT_URL_DOMAIN_ID
      - SME_JOT_URL_DOMAIN_ID
      - SPLIT_API_KEY
      - KAFKA_BROKERS=b-1.dev-managed-kafka-neo4.w2oo2u.c7.kafka.us-east-1.amazonaws.com:9094,b-2.dev-managed-kafka-neo4.w2oo2u.c7.kafka.us-east-1.amazonaws.com:9094,b-3.dev-managed-kafka-neo4.w2oo2u.c7.kafka.us-east-1.amazonaws.com:9094
      - OWS_NOTIFICATIONS_URL=https://qa-ows-notifications.theorchard.io
      - ORCHARD_INSIGHTS_URL=https://insights.theorchard.com
      - AWAL_INSIGHTS_URL=https://insights.awal.com
      - SME_INSIGHTS_URL=https://insights.sonymusic.com
      - GRAPHQL_GATEWAY_URL=https://qa-graphql-gateway.theorchard.io/graphql
      - AUTH_ISSUERS=https://qalogin.theorchard.com/,https://qa-orchard.auth0.com/
      - SPOTIFY_CLIENT_ID
      - SPOTIFY_CLIENT_SECRET
      - CACHE_USE_REDIS=true
      - CACHE_REDIS_URI=redis
      - SNOWFLAKE_ACCOUNT=orchard
      - SNOWFLAKE_USERNAME
      - SNOWFLAKE_ROLE=DEV_ENGINEERING
      - SNOWFLAKE_DATABASE=FACTS
      - SNOWFLAKE_SCHEMA=QA
      - SNOWFLAKE_WAREHOUSE=DEV_OWS_WAREHOUSE
      - SNOWFLAKE_AUTHENTICATOR=SNOWFLAKE_JWT
      - SNOWFLAKE_PRIVATE_KEY_PATH=/home/node/.ssh/snowflake/rsa_key.p8
      - SNOWFLAKE_PRIVATE_KEY_PASSPHRASE
      - SNOWFLAKE_TIMEOUT=60000
      - SNOWFLAKE_SEARCH_API_URL=https://SME-ORCHARD.snowflakecomputing.com/api/v2/

    container_name: graphql-knowledge
    ports:
      - '8080:8080'
    volumes:
      - ./src:/var/app/src
      - ${HOME}/.ssh/snowflake:/home/node/.ssh/snowflake:ro
  lint-and-test:
    build:
      context: .
      target: lint-and-test
      args:
        - DOCKER_BUILDKIT=1
      secrets:
        - GITHUB_NPM_TOKEN
    environment:
      - NODE_ENV=test
      - ENV=test
      - GITHUB_NPM_TOKEN=/run/secrets/GITHUB_NPM_TOKEN
  integration-tests:
    build:
      context: .
      target: integration-tests
      args:
        - DOCKER_BUILDKIT=1
      secrets:
        - GITHUB_NPM_TOKEN
    environment:
      - NODE_ENV=test
      - ENV=test
      - GITHUB_NPM_TOKEN=/run/secrets/GITHUB_NPM_TOKEN
      - BASE_URL=https://qa-graphql-knowledge.theorchard.io/graphql
      - NEO4J_URL=neo4j+ssc://qa-neo4j-cluster.theorchard.io:7687
      - NEO4J_USER
      - NEO4J_PASSWORD
      - NEO4J_AURA_URL
      - NODE_OPTIONS=${NODE_OPTIONS:-}
      - JOB_NAME=${JOB_NAME:-}
      - JOB_URL=${JOB_URL:-}
      - BUILD_NUMBER=${BUILD_NUMBER:-}
      - BUILD_ID=${BUILD_ID:-}
      - BUILD_TAG=${BUILD_TAG:-}
      - BUILD_URL=${BUILD_URL:-}
      - JENKINS_URL=${JENKINS_URL:-}
      - DD_TEST_SESSION_NAME=integration-tests
      - DD_SERVICE=graphql-knowledge-integration-tests
      - DD_ENV=qa
      - DD_AGENT_HOST=172.17.0.1
      - WORKSPACE=${WORKSPACE:-}
      - DD_GIT_REPOSITORY_URL=${GIT_URL:-}
      - DD_GIT_COMMIT_SHA=${GIT_COMMIT:-}
      - DD_GIT_BRANCH=${GIT_BRANCH:-}
      - DD_GIT_COMMIT_AUTHOR_NAME=${DD_GIT_COMMIT_AUTHOR_NAME:-}
      - DD_GIT_COMMIT_AUTHOR_EMAIL=${DD_GIT_COMMIT_AUTHOR_EMAIL:-}
      - DD_GIT_COMMIT_AUTHOR_DATE=${DD_GIT_COMMIT_AUTHOR_DATE:-}
secrets:
  GITHUB_NPM_TOKEN:
    environment: 'GITHUB_NPM_TOKEN'
volumes:
  redis-data:
    driver: local
