---
services:
  memcache:
    image: memcached
    restart: unless-stopped
    expose:
      - 11211
    healthcheck:
      test: ["CMD", "timeout", "5", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/11211"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s

  oauth-bootstrap:
    platform: linux/amd64
    restart: unless-stopped
    build:
      context: .
      target: oauth-bootstrap
      secrets:
        - github_auth
    ports:
      - 8080:8080
    volumes:
      - ./public:/var/app/public
      - ./src:/var/app/src
    env_file:
      - path: .env
        required: false
    environment:
      - MEMCACHE_HOST=memcache
    depends_on:
      memcache:
        condition: service_healthy

  activities-q-population:
    platform: linux/amd64
    restart: unless-stopped
    build:
      context: .
      target: deploy
      secrets:
        - github_auth
    volumes:
      - ./scripts:/var/app/scripts
      - ./src:/var/app/src
    env_file:
      - path: .env
        required: false
    environment:
      - PATH_FROM_REPO_ROOT_OF_PHP_SCRIPT_TO_RUN=scripts/ActivitiesQPopulation.php
      - MEMCACHE_HOST=memcache
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
      - AWS_REGION
    depends_on:
      memcache:
        condition: service_healthy

  format:
    platform: linux/amd64
    build:
      context: .
      target: code-format
      secrets:
        - github_auth
    volumes:
      - ./src:/var/app/src

  composer-update:
    platform: linux/amd64
    build:
      context: .
      target: deps-update
    secrets:
      - github_auth
    user: "${UID:-1000}:${GID:-1000}"
    volumes:
      - ./composer.json:/var/app/composer.json:ro
      - ./composer.lock:/var/app/composer.lock

  unit-lint:
    platform: linux/amd64
    build:
      context: .
      target: unit-lint
      secrets:
        - github_auth
    volumes:
      - ./build:/var/app/build

secrets:
  github_auth:
    environment: GITHUB_AUTH
