services:
  ows-podcast:
    build: .
    environment:
      PODCAST_DB_URL: mysql+pymysql://root:123@mysqldb/ows_podcast
      Environment: dev
    ports:
      - '8080:8080'
    depends_on:
      - mysqldb

  mysqldb:
    image: mysql:5.7.12
    ports:
      - '3306:3306'
    volumes:
      - ./dev/ows_podcast.sql:/docker-entrypoint-initdb.d/ows_podcast.sql
    environment:
      MYSQL_ROOT_PASSWORD: 123
      MYSQL_DATABASE: 'ows_podcast'

  megaphone-show-importer:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    environment:
      - SCRIPT_PATH=scripts/megaphone_show_importer.py
      - API_KEY=${API_KEY}
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}

  backfill-ad-locations:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    environment:
      - SCRIPT_PATH=scripts/backfill_ad_locations.py
      - API_KEY=${API_KEY}
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}
      - FILENAME=${FILENAME}

  selenium-chrome:
    image: selenium/standalone-chrome:latest  # Use the latest Selenium Chrome image
    container_name: selenium-chrome
    ports:
      - '4444:4444'  # Expose the Selenium server
      - '4317:4317'  # Expose the java logger
    shm_size: 2gb

  show-links-importer:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    depends_on:
      - selenium-chrome
    environment:
      - SCRIPT_PATH=scripts/show_links_importer.py
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}
      - SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID}
      - SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET}

  episodes-links-importer:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    depends_on:
      - selenium-chrome
    environment:
      - SCRIPT_PATH=scripts/episodes_links_importer.py
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}
      - SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID}
      - SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET}

  update-episode-description:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    environment:
      - SCRIPT_PATH=scripts/update_episode_description.py
      - API_KEY=${API_KEY}
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}

  backfill-season-number-for-episodes:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    environment:
      - SCRIPT_PATH=scripts/backfill_season_number_for_episodes.py
      - API_KEY=${API_KEY}
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}

  backfill-external-id:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    environment:
      - SCRIPT_PATH=scripts/backfill_external_id.py
      - API_KEY=${API_KEY}
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}
      - FILENAME=${FILENAME}

  backfill-episode-numbers-for-show:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    environment:
      - SCRIPT_PATH=scripts/backfill_episode_numbers_for_show.py
      - API_KEY=${API_KEY}
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}

  backfill-season-and-episode-number:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    environment:
      - SCRIPT_PATH=scripts/backfill_season_and_episode_number.py
      - API_KEY=${API_KEY}
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}
      - FILENAME=${FILENAME}

  megaphone-inventory-ingester:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile.scripts
    volumes:
      - .:/var/app
    environment:
      - SCRIPT_PATH=scripts/megaphone_inventory_ingester.py
      - MEGAPHONE_API_TOKEN=${MEGAPHONE_API_TOKEN}
      - LOGGER_DSN=${LOGGER_DSN}
      - SENTRY_DSN=${SENTRY_DSN}
      - CLOUDFRONT_KEY_PAIR_ID=${CLOUDFRONT_KEY_PAIR_ID}
      - CLOUDFRONT_PRIVATE_KEY=${CLOUDFRONT_PRIVATE_KEY}
      - PODCAST_DB_URL=${PODCAST_DB_URL}
      - UPLOAD_ROLE_ARN=${UPLOAD_ROLE_ARN}
      - ASSET_TRANCODER_API=${ASSET_TRANCODER_API}
      - OUTPUT_ASSETS_BUCKET_NAME=${OUTPUT_ASSETS_BUCKET_NAME}
      - OUTPUT_CDN_BASE_URL=${OUTPUT_CDN_BASE_URL}
      - INPUT_ASSETS_BUCKET_NAME=${INPUT_ASSETS_BUCKET_NAME}
      - AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
      - MEGAPHONE_ORG_ID=${MEGAPHONE_ORG_ID}
      - DAEMON_NOTIFICATIONS_QUEUE_URL=${DAEMON_NOTIFICATIONS_QUEUE_URL}
      - STS_TOKEN_DURATION=${STS_TOKEN_DURATION}
      - SPLITIO_API_KEY=${SPLITIO_API_KEY}
      - SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID}
      - SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET}
