version: "3.8"

services:
  # Database Containers
  redis:
    image: redis:5.0.5

  postgres:
    image: postgres:9.6
    environment:
      - POSTGRES_USER=airflow
      - POSTGRES_PASSWORD=airflow
      - POSTGRES_DB=airflow
    ports:
      - "6006:5432"

  cucumber-mysql-royalties:
    image: mysql:8.0.36
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=royalty_accounting
      - MYSQL_USER=royalties
      - MYSQL_PASSWORD=1234
    ports:
      - "6007:3306"
    command: "--sql_mode=NO_ENGINE_SUBSTITUTION"

  cucumber-liquibase-runner:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/royalties-liquibase-runner:latest
    depends_on:
      - cucumber-mysql-royalties
    environment:
      - MYSQL_DB_HOST=cucumber-mysql-royalties
      - MYSQL_DB_PORT=3306
      - MYSQL_DB_NAME=royalty_accounting
      - MYSQL_DEPLOY_USER=root
      - MYSQL_DEPLOY_PASSWORD=root
      - MYSQL_SERVICE_USER=royalties
      - SERVICE_NAME=royalty_accounting
      - GITHUB_USER=theorchard
      - GITHUB_REPO=database
      - GITHUB_BRANCH=master
      - GITHUB_REPO_DIR=royalty_accounting

  # Airflow
  airflow:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-royalties-workflows:latest
    depends_on:
      - postgres
    environment:
      - AIRFLOW__CORE__FERNET_KEY=bxV9HYA9kqmEO6pNhHLFpGQCu-lU-qfx4X_-nDn1wmI=
      - AIRFLOW__CORE__REMOTE_LOGGING=False
      - AIRFLOW__WEBSERVER__SECRET_KEY=448c1beb6f911de318e663608150da55f04ba19ec50c6fcc907eb5d903ff
      - OWS_ENV=dev
      - POSTGRES_HOST=postgres
      - POSTGRES_USER=airflow
      - POSTGRES_PASSWORD=airflow
      - POSTGRES_DB=airflow
      - POSTGRES_PORT=5432
      - OWSREQUEST_SERVICE_MAP=$OWSREQUEST_SERVICE_MAP
      - DATADOG_TRACE_ENABLED=FALSE
    ports:
      - "6000:8080"

  # OWS Services
  abacus-contract:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-abacus-contract:latest
    depends_on:
      - cucumber-liquibase-runner
    environment:
      - MYSQL_DB_HOST=cucumber-mysql-royalties
      - MYSQL_DB_USER=royalties
      - MYSQL_DB_PASS=1234
      - MYSQL_DB_PORT=3306
      - MYSQL_DB_NAME=royalty_accounting
      - OWSREQUEST_SERVICE_MAP=$OWSREQUEST_SERVICE_MAP
      - DATADOG_TRACE_ENABLED=FALSE
    ports:
      - "6009:8080"

  abacus-event:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-abacus-event:latest
    depends_on:
      - cucumber-liquibase-runner
    environment:
      - MYSQL_DB_HOST=cucumber-mysql-royalties
      - MYSQL_DB_USER=royalties
      - MYSQL_DB_PASS=1234
      - MYSQL_DB_PORT=3306
      - MYSQL_DB_NAME=royalty_accounting
      - OWSREQUEST_SERVICE_MAP=$OWSREQUEST_SERVICE_MAP
      - DATADOG_TRACE_ENABLED=FALSE
    ports:
      - "6012:8080"

  abacus-state:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-abacus-state:latest
    depends_on:
      - cucumber-liquibase-runner
    environment:
      - MYSQL_DB_HOST=cucumber-mysql-royalties
      - MYSQL_DB_USER=royalties
      - MYSQL_DB_PASS=1234
      - MYSQL_DB_PORT=3306
      - MYSQL_DB_NAME=royalty_accounting
      - OWSREQUEST_SERVICE_MAP=$OWSREQUEST_SERVICE_MAP
      - DATADOG_TRACE_ENABLED=FALSE
    ports:
      - "6014:8080"

  ledger:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-ledger:latest
    depends_on:
      - cucumber-liquibase-runner
    environment:
      - MYSQL_DB_HOST=cucumber-mysql-royalties
      - MYSQL_DB_USER=royalties
      - MYSQL_DB_PASS=1234
      - MYSQL_DB_PORT=3306
      - MYSQL_DB_NAME=royalty_accounting
      - LC_ALL=en_US.utf-8
      - OWSREQUEST_SERVICE_MAP=$OWSREQUEST_SERVICE_MAP
      - DATADOG_TRACE_ENABLED=FALSE
    ports:
      - "6003:8080"

  payee:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-payee:latest
    depends_on:
      - cucumber-liquibase-runner
    environment:
      - MYSQL_DB_HOST=cucumber-mysql-royalties
      - MYSQL_DB_USER=royalties
      - MYSQL_DB_PASS=1234
      - MYSQL_DB_PORT=3306
      - MYSQL_DB_NAME=royalty_accounting
      - AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN
      - AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION
      - KMS_KEY_ALIAS=qa-ows-payee-ci-cd-key
      - DYNAMODB_TABLE_NAME=qa_ows-payee-payee-ci-cd
      - OWSREQUEST_SERVICE_MAP=$OWSREQUEST_SERVICE_MAP
      - LOGGER_LEVEL=WARNING
      - DATADOG_TRACE_ENABLED=FALSE
    ports:
      - "6001:8080"

  payment:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-payment:latest
    depends_on:
      - cucumber-liquibase-runner
    environment:
      - MYSQL_DB_HOST=cucumber-mysql-royalties
      - MYSQL_DB_USER=royalties
      - MYSQL_DB_PASS=1234
      - MYSQL_DB_PORT=3306
      - MYSQL_DB_NAME=royalty_accounting
      - OWSREQUEST_SERVICE_MAP=$OWSREQUEST_SERVICE_MAP
      - DATADOG_TRACE_ENABLED=FALSE
    ports:
      - "6010:8080"

  royalties:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-royalties:latest
    depends_on:
      - cucumber-liquibase-runner
    environment:
      - MYSQL_DB_HOST=cucumber-mysql-royalties
      - MYSQL_DB_USER=royalties
      - MYSQL_DB_PASS=1234
      - MYSQL_DB_PORT=3306
      - MYSQL_DB_NAME=royalty_accounting
      - AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN
      - AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION
      - LC_ALL=en_US.utf-8
      - OWSREQUEST_SERVICE_MAP=$OWSREQUEST_SERVICE_MAP
      - S3_SALES_BUCKET_NAME=qa-royalties-sales-files
      - DATADOG_TRACE_ENABLED=FALSE
    ports:
      - "6002:8080"

  grass:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/ows-grass:latest
    depends_on:
      - redis
    environment:
      - Environment=dev
      - LOGGER_HANDLER_ASYNC=1
      - SESSION_DURATION=60000
      - DB_URL=mysql+pymysql://${QA_MYSQL_USER}:${QA_MYSQL_PASSWORD}@qa.db.qaorch.com:3306/art_relations
      - DB_POOL_RECYCLE_TIMEOUT=60
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - AUTH0_DOMAIN=qa-orchard.auth0.com
      - AUTH0_API_AUDIENCE=https://workstation.qaorch.com/api
      - LOGGING_LEVEL=WARNING
      - JWT_REFRESH_INTERVAL=1000
      - DATADOG_TRACE_ENABLED=FALSE
    volumes:
      - ./service_overrides:/var/app/service_overrides
    ports:
      - "6004:8080"

  # GraphQL Containers
  graphql-abacus:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/graphql-abacus:latest
    command: yarn start
    environment:
      - NODE_ENV=test
      - PORT=8080
      - INTROSPECTION=1
      - PLAYGROUND=1
      - DEBUG=1
      - LOG_LEVEL=debug
      - AWS_DEFAULT_REGION=us-east-1
      - OWS_PAYEE_URL=http://payee:8080/
      - OWS_ROYALTIES_URL=http://royalties:8080/
      - OWS_ABACUS_CONTRACT_URL=http://abacus-contract:8080/
      - OWS_ABACUS_EVENT_URL=http://abacus-event:8080/
      - OWS_LEDGER_URL=http://ledger:8080/
      - OWS_PAYMENT_URL=http://payment:8080/
      - OWS_ABACUS_STATE_URL=http://abacus-state:8080/
      - DD_TRACE_ENABLED=FALSE
    ports:
      - "6011:8080"

  graphql-gateway:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/graphql-gateway:latest
    command: yarn start
    environment:
      - NODE_ENV=test
      - MANAGED=false
      - PORT=8080
      - INTROSPECTION=1
      - PLAYGROUND=1
      - DEBUG=1
      - LOG_LEVEL=debug
      - AWS_DEFAULT_REGION=us-east-1
      - APOLLO_KEY=
      - APOLLO_ENGINE_API_KEY=
      - APOLLO_GRAPH_VARIANT=
      - APOLLO_ENGINE_SCHEMA_TAG=local
      - GRAPHQL_PRODUCT_URL=https://qa-graphql-product.theorchard.io/graphql
      - GRAPHQL_KNOWLEDGE_URL=https://qa-graphql-knowledge.theorchard.io/graphql
      - GRAPHQL_ABACUS_URL=http://graphql-abacus:8080/graphql
      - GRAPHQL_PARTICIPANT_URL=https://qa-graphql-participant.theorchard.io/graphql
      - GRAPHQL_PODCAST_URL=https://qa-graphql-podcast.theorchard.io/graphql/
      - GRAPHQL_SR_DELIVERY_URL=https://qa-graphql-sr-delivery.theorchard.io/graphql
      - GRAPHQL_USER_URL=https://qa-graphql-user.theorchard.io/graphql
      - GRAPHQL_PUBLISHING_URL=https://qa-graphql-publishing.theorchard.io/graphql
      - GRAPHQL_CONTENT_REVIEW_URL=https://qa-graphql-content-review.theorchard.io/graphql
      - GRAPHQL_KNOWLEDGE_SEARCH_URL=https://qa-graphql-knowledge-search.theorchard.io/graphql
      - GRAPHQL_ANALYTICS_URL=https://qa-graphql-analytics.theorchard.io/graphql
      - DD_TRACE_ENABLED=FALSE
    ports:
      - "6013:8080"

  # Frontend Containers
  frontend:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/frontend-royalties:latest
    user: "node"
    depends_on:
      - https-proxy
    environment:
      - NODE_ENV=production
      - WEBPACK_DEV_SERVER_HOST=0.0.0.0
      - WEBPACK_DEV_SERVER_PORT=8080
      - MINIFY=0
      - GRAPHQL_URL=https://https-proxy/graphql-gateway/graphql
      - ENV=test
      - APP_VERSION=1.0.0
      # Auth0 configuration
      - AUTH0_APP_NAME=abacus-login
      - AUTH0_CLIENT_ID=wTcXYKnR8wk4gIe3C8dNGb4PbH0V3JJn
      - AUTH0_DOMAIN=qa-orchard.auth0.com
      - AUTH0_AUDIENCE=https://workstation.qaorch.com/api
      # HTTPS configuration
      - USE_HTTPS=1
      - SSL_KEY_FILE_RELATIVE_PATH=./lib/dev-server/ssl/frontend.key
      - SSL_CERTIFICATE_FILE_RELATIVE_PATH=./lib/dev-server/ssl/frontend.cert
      - DD_TRACE_ENABLED=FALSE
    ports:
      - "6005:8080"
    command: "yarn start:royalties"

  frontend_local:
    image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/frontend-royalties:latest
    user: "node"
    depends_on:
      - https-proxy
    environment:
      - NODE_ENV=production
      - WEBPACK_DEV_SERVER_HOST=0.0.0.0
      - WEBPACK_DEV_SERVER_PORT=8080
      - MINIFY=0
      - GRAPHQL_URL=https://localhost:6043/graphql-gateway/graphql
      - ENV=test
      - APP_VERSION=1.0.0
      # Auth0 configuration
      - AUTH0_APP_NAME=abacus-login
      - AUTH0_CLIENT_ID=wTcXYKnR8wk4gIe3C8dNGb4PbH0V3JJn
      - AUTH0_DOMAIN=qa-orchard.auth0.com
      - AUTH0_AUDIENCE=https://workstation.qaorch.com/api
      # HTTPS configuration
      - USE_HTTPS=1
      - SSL_KEY_FILE_RELATIVE_PATH=./lib/dev-server/ssl/localhost.key
      - SSL_CERTIFICATE_FILE_RELATIVE_PATH=./lib/dev-server/ssl/localhost.cert
      - DD_TRACE_ENABLED=FALSE
    ports:
      - "6005:8080"
    command: "yarn start:royalties"

  https-proxy:
    build: ./https-proxy/
    depends_on:
      - grass
    environment:
      UPSTREAM_DOMAIN: grass
      UPSTREAM_PORT: 8080
      PROXY_DOMAIN: https-proxy
    ports:
      - "6043:443"

  selenium:
    # image: selenium/standalone-chrome:90.0.4430.85-20210422
    image: selenium/standalone-chrome:3.141.59
    environment:
      - JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=
    ports:
      - "6008:4444"
