version: '3.8'

services:
    moneyhub-mysql:
        image: mysql:8.0.36
        platform: linux/amd64
        environment:
            - MYSQL_ROOT_PASSWORD=root
            - MYSQL_DATABASE=royalty_accounting
            - MYSQL_USER=royalties
            - MYSQL_PASSWORD=1234
            - DOCKER_DEFAULT_PLATFORM=linux/amd64
        command: "--sql_mode=NO_ENGINE_SUBSTITUTION"
        ports:
            - "6500:3306"
        volumes:
            - "dbdata:/var/lib/mysql"

    ows-moneyhub:
        platform: linux/amd64
        build:
            context: .
            target: deploy
        image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/ows-moneyhub:latest
        depends_on:
            - moneyhub-liquibase-runner
        environment:
            - MYSQL_DB_HOST=moneyhub-mysql
            - MYSQL_DB_USER=royalties
            - MYSQL_DB_PASS=1234
            - MYSQL_DB_PORT=3306
            - MYSQL_DB_NAME=royalty_accounting
            - OWS_ENV=dev
            - SERVICE_DEFAULT_PROTOCOL=http
            - JWT_AUTH_ENABLED=true
            - AUTH_LEEWAY=31556952
        ports:
            - "6501:8080"

    moneyhub-redis:
        image: redis/redis-stack:latest
        ports:
            - "6379:6379"
        volumes:
            - redis-data:/data

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

    lint-and-unit-test:
        platform: linux/amd64
        build:
            context: .
            target: lint_and_unit_test
        volumes:
            - .:/var/app/
        environment:
            - Environment=test
            - SERVICE_DEFAULT_PROTOCOL=http

    integration-test:
        platform: linux/amd64
        build:
            context: .
            target: integration_test
        volumes:
            - .:/var/app/
        depends_on:
            - ows-moneyhub
            - moneyhub-mysql
        environment:
            - Environment=test
            - SERVICE_DEFAULT_PROTOCOL=http
            - MONEYHUB_HOST=ows-moneyhub
            - MONEYHUB_PORT=8080
            - AWS_REGION=us-east-1
            - AWS_ACCESS_KEY_ID
            - AWS_SECRET_ACCESS_KEY
            - AWS_SESSION_TOKEN
            # integration tests config
            - MYSQL_HOST=moneyhub-mysql
            - MYSQL_PORT=3306
            - MYSQL_USER
            - MYSQL_NAME
            - MYSQL_PASS
            - CI=${CI}
            # functional tests config
            - TEST_MYSQL_DB_HOST=moneyhub-mysql
            - TEST_MYSQL_DB_USER=royalties
            - TEST_MYSQL_DB_PASS=1234
            - TEST_MYSQL_DB_NAME=royalty_accounting_test
            - TEST_MYSQL_DB_PORT=3306

    script-runner:
        platform: linux/amd64
        build:
            context: .
            target: script_runner
        volumes:
            - .:/var/app/
        environment:
            - AWS_DEFAULT_REGION=us-east-1
            - SPLITIO_API_KEY=localhost
            - Environment
            - SCRIPT
            - STATEMENT_PERIOD_ID
            - ACCOUNT_ID
            - APPLY_VAT_TO_LEDGER_FOR_KNR
            - REPORT_CUSTOM_IDS
            - STATEMENT_ATTACHMENT_TYPE
            - STATEMENT_ATTACHMENT_IDS
            - SNOWFLAKE_ACCOUNT
            - SNOWFLAKE_DATABASE
            - SNOWFLAKE_PRIVATE_KEY_PATH
            - SNOWFLAKE_PRIVATE_KEY
            - SNOWFLAKE_KEY_PASSPHRASE
            - SNOWFLAKE_SCHEMA
            - SNOWFLAKE_ROLE
            - SNOWFLAKE_WAREHOUSE
            - AWS_ACCESS_KEY_ID
            - AWS_SECRET_ACCESS_KEY
            - AWS_SESSION_TOKEN
            - MYSQL_DB_HOST
            - MYSQL_DB_USER
            - MYSQL_DB_NAME
            - MYSQL_DB_PORT
            - MYSQL_DB_PASS
            - SLACK_WEBHOOK_URL


volumes:
    dbdata:
    redis-data:
