version: '3'
volumes:
  postgres_data: {}
  elastic_data: {}

services:
  app:
    build:
      context: .
      dockerfile: ./docker/app/Dockerfile
    environment:
      - MIX_ENV=dev
      - PGPASSWORD=postgres
      - ANONYMOUS_NAME_SALT=2fmJRo0OgMFe65kyAJBxPT0QtkVes/jnKDdtP21fexsRqiw8TlSY7yO+uFyMZycp
      - HCAPTCHA_SECRET_KEY=0x0000000000000000000000000000000000000000
      - HCAPTCHA_SITE_KEY=10000000-ffff-ffff-ffff-000000000001
      - PASSWORD_PEPPER=dn2e0EpZrvBLoxUM3gfQveBhjf0bG/6/bYhrOyq3L3hV9hdo/bimJ+irbDWsuXLP
      - TUMBLR_API_KEY=fuiKNFp9vQFvjLNvx4sUwti4Yb5yGutBN4Xh10LXZhhRKjWlV4
      - OTP_SECRET_KEY=Wn7O/8DD+qxL0X4X7bvT90wOkVGcA90bIHww4twR03Ci//zq7PnMw8ypqyyT/b/C
      - ADVERT_FILE_ROOT=priv/static/system/images/adverts
      - AVATAR_FILE_ROOT=priv/static/system/images/avatars
      - BADGE_FILE_ROOT=priv/static/system/images
      - IMAGE_FILE_ROOT=priv/static/system/images
      - TAG_FILE_ROOT=priv/static/system/images
      - CHANNEL_URL_ROOT=/media
      - AVATAR_URL_ROOT=/avatars
      - ADVERT_URL_ROOT=/spns
      - IMAGE_URL_ROOT=/img
      - BADGE_URL_ROOT=/media
      - TAG_URL_ROOT=/media
      - ELASTICSEARCH_URL=http://elasticsearch:9200
      - REDIS_HOST=redis
      - DATABASE_URL=ecto://postgres:postgres@postgres/philomena_dev
      - CDN_HOST=localhost
      - MAILER_ADDRESS=noreply@philomena.local
      - START_ENDPOINT=true
      - SITE_DOMAINS=localhost
    working_dir: /srv/philomena
    tty: true
    volumes:
      - .:/srv/philomena
    depends_on:
      - postgres
      - elasticsearch
      - redis

  postgres:
    image: postgres:13.4-alpine
    environment:
      - POSTGRES_PASSWORD=postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
    logging:
      driver: "none"

  elasticsearch:
    image: elasticsearch:7.9.3
    volumes:
      - elastic_data:/usr/share/elasticsearch/data
    logging:
      driver: "none"
    environment:
      - discovery.type=single-node
    ulimits:
      nofile:
        soft: 65536
        hard: 65536

  redis:
    image: redis:6.2.5-alpine
    logging:
      driver: "none"

  web:
    build:
      context: .
      dockerfile: ./docker/web/Dockerfile
    volumes:
      - .:/srv/philomena
    logging:
      driver: "none"
    depends_on:
      - app
    ports:
      - '8080:80'