services:

  test-integration:
    build:
      context: .
      target: test-integration
    environment:
      - QA_BASE_URL=http://int-ows-features:8080
      - SPLITIO_API_KEY
      - SPLIT_V2_API=https://api.split.io/internal/api/v2
      - SPLIT_ENVIRONMENT='QA'
      - FORCE_REMOTE=true
      - ADMIN_SPLITIO_API_KEY
      - AWS_ACCESS_KEY_ID
      - AWS_DEFAULT_REGION=us-east-1
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
    volumes:
      - .:/var/app
    depends_on:
      int-ows-features:
        condition: service_healthy

  unit-lint:
    build:
      context: .
      target: unit-lint
    volumes:
      - .:/var/app

  ows-features-dev:
    build:
      context: .
      target: dev
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5000/hello/"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s
    volumes:
      - .:/var/app
    environment:
     - Environment
     - SPLITIO_API_KEY

  ows-features-deploy:
    build:
      context: .
      target: deploy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/hello/"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s
    environment:
     - Environment
     - SPLITIO_API_KEY

  int-redis:
    platform: linux/amd64
    image: 'redis:5.0.6'
    healthcheck:
      test: [ "CMD-SHELL", "redis-cli ping | grep PONG" ]
      interval: 5s
      timeout: 5s
      retries: 10

  int-neo4j:
    platform: linux/amd64
    image: neo4j:4.4.30
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider localhost:7474 || exit 1"]
      interval: 5s
      timeout: 5s
      retries: 10
    environment:
      NEO4J_AUTH: neo4j/test

  int-mysql:
    platform: linux/amd64
    image: mysql:5.7.44
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-ptest"]
      timeout: 20s
      retries: 10
    hostname: db
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: test
      MYSQL_DATABASE: art_relations
      MYSQL_USER: mysql
      MYSQL_PASSWORD: test

  int-ows-users:
    platform: linux/amd64
    image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/ows-users:latest
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/hello/"]
      interval: 5s
      timeout: 5s
      retries: 10
    environment:
      - Environment=dev
      - NEO4J_URL=bolt://neo4j:7687
      - NEO4J_USERNAME=neo4j
      - NEO4J_PASSWORD=test
      - NEO4J_dbms_connectors_default__listen__address=0.0.0.0
      - NEO4J_dbms_connector_bolt_listen__address=0.0.0.0:7687
      - NEO4J_dbms_ssl_policy_default_client__auth=NONE
      - NEO4J_dbms_ssl_policy_legacy_allow__key__generation=true
      - NEO4J_dbms_ssl_policy_legacy_client__auth=NONE
      - NEO4J_dbms_ssl_policy_legacy_trust__all=true
      - NEO4J_dbms_connector_https_enabled=false
      - AR_MYSQL_DATABASE=art_relations
      - AR_MYSQL_HOST=mysql
      - AR_MYSQL_USER=mysql
      - AR_MYSQL_PASSWORD=test
      - AR_MYSQL_PORT=3306
    depends_on:
      int-redis:
        condition: service_healthy
      int-mysql:
        condition: service_healthy

  int-ows-features:
    platform: linux/amd64
    image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/ows-features:latest
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/hello/"]
      interval: 5s
      timeout: 5s
      retries: 10
    environment:
      - Environment=dev
      - OWSREQUEST_SERVICE_MAP={"ows-users":"int-ows-users:8080"}
      - SPLITIO_ENABLED=true
      - FORCE_REMOTE=true
      - AWS_ACCESS_KEY_ID
      - AWS_DEFAULT_REGION=us-east-1
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
    depends_on:
      int-redis:
        condition: service_healthy
      int-ows-users:
        condition: service_healthy
