services:
  decider: &common
    entrypoint: garcon -l info decider ${DOCKER_COMPOSE_FLOW}
    image: localhost/dev-swf-feed-ingestion
    platform: linux/amd64
    volumes:
      - ~/.ssh/snowflake:/home/worker/.ssh/snowflake
      - ./feed_ingestion:/var/app/feed_ingestion
      - ./tests:/var/app/tests
    environment:
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_DEFAULT_REGION
      - AWS_REGION
      - AWS_SESSION_TOKEN
      # set flow name for entrypoint.sh
      - GARCON_FLOW_NAME=${DOCKER_COMPOSE_FLOW}
    env_file:
      - .env
  worker:
    <<: *common
    scale: ${DOCKER_COMPOSE_WORKERS:-1}
    entrypoint: garcon -l info worker ${DOCKER_COMPOSE_FLOW}
    # replicates memory limit for itunes_tickets fargate config
    mem_limit: 4096m
    build:
      dockerfile: ${DOCKERFILE:-Dockerfile}
      target: dev
      args:
        IS_DEV: true
        # uncomment if you run itunes_tickets
        # WITH_ITMS: true

  unit-lint:
    platform: linux/amd64
    build:
      context: .
      dockerfile: ${DOCKERFILE:-Dockerfile}
      target: dev
      args:
        - IS_DEV=true
    volumes:
      - ./build:/var/app/build
    command: make check_deps check_lock test_unit_cov lint
    profiles:
      - test


  production:
    platform: linux/amd64
    build:
      context: .
      dockerfile: ${DOCKERFILE:-Dockerfile}
      target: production
      args:
        IS_DEV: false
        WITH_ITMS: false
        version: ${APP_VERSION:-latest}
    env_file:
      - .env
    volumes:
      - ~/.ssh/snowflake:/home/worker/.ssh/snowflake
    environment:
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_DEFAULT_REGION
      - AWS_SESSION_TOKEN
      - GARCON_FLOW_NAME=${DOCKER_COMPOSE_FLOW}
    profiles:
      - prod
