services:
  unit-lint:
    platform: linux/amd64
    build:
      context: .
      target: unit-lint
    environment:
      - Environment=test
      - SKIP_LINT=0
      - TEST_ARGS=-v
      - DD_TRACE_ENABLED=0
      - MYSQL_USER=${TEST_DB_USER}
      - MYSQL_PASSWORD=${TEST_DB_PASS}
      - MYSQL_HOST=${TEST_DB_HOST}
      - MYSQL_DATABASE=${TEST_DB_NAME}
    depends_on:
      test-ar-db:
        condition: service_healthy
    volumes:
      - ./build:/var/app/build

  dev:
    platform: linux/amd64
    build:
      context: .
      target: dev
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5001/hello/"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s
    ports:
      - "5001:5001"
    volumes:
      - ./store:/var/app/store
    env_file:
      - path: .env
        required: false
    environment:
      - AWS_SESSION_TOKEN
      - AWS_SECRET_ACCESS_KEY
      - AWS_ACCESS_KEY_ID
      - AWS_REGION

  integration:
    platform: linux/amd64
    build:
      context: .
      target: integration
    environment:
      - QA_BASE_URL
      - AWS_SESSION_TOKEN
      - AWS_SECRET_ACCESS_KEY
      - AWS_ACCESS_KEY_ID

  deploy:
    platform: linux/amd64
    build:
      context: .
      target: deploy
    environment:
      - Environment=qa
      - AWS_SESSION_TOKEN
      - AWS_SECRET_ACCESS_KEY
      - AWS_ACCESS_KEY_ID
      - AWS_REGION
      - MYSQL_USER
      - MYSQL_PASSWORD
      - MYSQL_HOST
      - MYSQL_DATABASE
    volumes:
      - ./store:/var/app/store
    ports:
      - "8080:8080"

  format:
    platform: linux/amd64
    build:
      context: .
      target: format
    volumes:
      - ./:/var/app

  update-lockfile:
    platform: linux/amd64
    build:
      context: .
      target: update-lockfile
    volumes:
      - ./poetry.lock:/var/app/poetry.lock

  test-ar-db:
    platform: linux/amd64
    image:
      086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-database-images:art-relations
    pull_policy: always
    environment:
      DB_USER: ${TEST_DB_USER}
      DB_PASSWORD: ${TEST_DB_PASS}
    command: >
      --disable-log-bin
    tmpfs:
      - /var/lib/mysql
    healthcheck:
      interval: 1s
      timeout: 5s
      retries: 180
