---
services:

  dev:
    platform: linux/amd64
    build:
      context: .
      target: dev
    volumes:
      - ./transcoding:/var/app/transcoding
    ports:
      - "5000:5000"
    environment:
      - Environment=dev
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
      - AWS_REGION
    env_file:
      - path: ./.env
        required: false

  deploy:
    platform: linux/amd64
    build:
      context: .
      target: deploy
    ports:
      - "5000:8080"
    environment:
      - Environment=dev
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
      - AWS_REGION
    env_file:
      - path: ./.env
        required: false
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 2048M

  unit-lint:
    platform: linux/amd64
    build:
      context: .
      target: unit-lint
    environment:
      - SKIP_LINT=0
      - SKIP_TYPE_CHECKS=0
      - TEST_ARGS=-v
      - Environment=test
      - DB_USER=${TEST_DB_USER}
      - DB_PASSWORD=${TEST_DB_PASS}
      - DB_HOST=${TEST_DB_HOST}
      - DB_NAME=${TEST_DB_NAME}
    depends_on:
      test-ows-transcoding-db:
        condition: service_healthy

  integration:
    platform: linux/amd64
    build:
      context: .
      target: integration
    environment:
      - Environment=qa
      - AWS_REGION=us-east-1
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN

  test-ows-transcoding-db:
    platform: linux/amd64
    image:
      086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-database-images:ows-transcoding
    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

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

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