version: '2.1'

services:
  app:
    image: mxpv/podsync
    container_name: app
    restart: always
    ports:
      - 5001
    environment:
      - REDIS_CONNECTION_URL=redis://redis
      - POSTGRES_CONNECTION_URL={POSTGRES_CONNECTION_URL}
      # https://console.developers.google.com/project/_/apiui/credential/serviceaccount
      - GOOGLE_APPLICATION_CREDENTIALS=/google-credentials.json
      - YOUTUBE_API_KEY={YOUTUBE_API_KEY}
      - VIMEO_API_KEY={VIMEO_API_KEY}
      - PATREON_CLIENT_ID={PATREON_CLIENT_ID}
      - PATREON_SECRET={PATREON_SECRET}
      - PATREON_REDIRECT_URL=https://podsync.net/patreon
      - PATREON_WEBHOOKS_SECRET={PATREON_WEBHOOKS_SECRET}
      - COOKIE_SECRET={COOKIE_SECRET}
      - GIN_MODE=release
      - AWS_ACCESS_KEY={AWS_ACCESS_KEY}
      - AWS_ACCESS_SECRET={AWS_ACCESS_SECRET}
      - DYNAMO_FEEDS_TABLE_NAME=Prod_Feeds
      - DYNAMO_PLEDGES_TABLE_NAME=Prod_Pledges
    volumes:
      - {PATH_TO_GOOGLE_CREDENTIALS_FILE_FOR_USE_OUTSIDE_GOOGLE_CLOUD}:/google-credentials.json
  ytdl:
    image: mxpv/ytdl
    container_name: ytdl
    restart: always
    ports:
      - 5002
    environment:
      - METADATA_URL=http://app:5001/api/metadata/{feed_id}
  redis:
    image: redis:5.0.1
    container_name: redis
    command: redis-server --appendonly no --save 900 1 --save 300 10 --save 60 10000
    restart: always
    volumes:
      - /data/redis:/data
    sysctls:
      net.core.somaxconn: 1024
    mem_limit: 268435456 # 256MB
    oom_kill_disable: true
  nginx:
    image: umputun/nginx-le:latest
    container_name: nginx
    restart: always
    ports:
      - 80:80
      - 443:443
    environment:
      - TZ=America/Los_Angeles
      - LETSENCRYPT=true
      - LE_EMAIL=pavlenko.maksym@gmail.com
      - LE_FQDN=podsync.net,www.podsync.net
    volumes:
      - /data/ssl:/etc/nginx/ssl
      - /data/podsync.conf:/etc/nginx/service.conf