version: '2'

services:
  server:
    image: tornadocash/relayer:mining
    restart: always
    command: server
    env_file: .env
    environment:
      REDIS_URL: redis://redis/0
      nginx_proxy_read_timeout: 600
    depends_on: [redis]

  treeWatcher:
    image: tornadocash/relayer:mining
    restart: always
    command: treeWatcher
    env_file: .env
    environment:
      REDIS_URL: redis://redis/0
    depends_on: [redis]

  priceWatcher:
    image: tornadocash/relayer:mining
    restart: always
    command: priceWatcher
    env_file: .env
    environment:
      REDIS_URL: redis://redis/0
    depends_on: [redis]

  healthWatcher:
    image: tornadocash/relayer:mining
    restart: always
    command: healthWatcher
    env_file: .env
    environment:
      REDIS_URL: redis://redis/0
    depends_on: [redis]

  worker1:
    image: tornadocash/relayer:mining
    restart: always
    command: worker
    env_file: .env
    environment:
      REDIS_URL: redis://redis/0
    depends_on: [redis]

  #  worker2:
  #    image: tornadocash/relayer:mining
  #    restart: always
  #    command: worker
  #    env_file: .env
  #    environment:
  #      PRIVATE_KEY: qwe
  #      REDIS_URL: redis://redis/0

  #  # this container will proxy *.onion domain to the server container
  #  # if you want to run *only* as .onion service, you don't need `nginx`, `letsencrypt`, `dockergen` containers
  #  tor:
  #    image: strm/tor
  #    restart: always
  #    depends_on: [server]
  #    environment:
  #      LISTEN_PORT: 80
  #      REDIRECT: server:8000
  #      # Generate a new key with
  #      # docker run --rm --entrypoint shallot strm/tor-hiddenservice-nginx ^foo
  #      PRIVATE_KEY: |
  #        -----BEGIN RSA PRIVATE KEY-----
  #        ...
  #        -----END RSA PRIVATE KEY-----

  #  # auto update docker containers when new image is pushed to docker hub (be careful with that)
  #  watchtower:
  #    image: v2tec/watchtower
  #    restart: always
  #    volumes:
  #      - /var/run/docker.sock:/var/run/docker.sock

  #  # this container will send Telegram notifications when other containers are stopped/restarted
  #  # it's best to run this container on some other instance, otherwise it can't notify if the whole instance goes down
  #  notifier:
  #    image: poma/docker-telegram-notifier
  #    restart: always
  #    volumes:
  #      - /var/run/docker.sock:/var/run/docker.sock:ro
  #    environment:
  #      # How to create bot: https://core.telegram.org/bots#3-how-do-i-create-a-bot
  #      # How to get chat id: https://stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id/32572159#32572159
  #      TELEGRAM_NOTIFIER_BOT_TOKEN: ...
  #      TELEGRAM_NOTIFIER_CHAT_ID: ...

  #  # this container will send Telegram notifications if specified address doesn't have enough funds
  #  monitor_mainnet:
  #    image: peppersec/monitor_eth
  #    restart: always
  #    environment:
  #      TELEGRAM_NOTIFIER_BOT_TOKEN: ...
  #      TELEGRAM_NOTIFIER_CHAT_ID: ...
  #      ADDRESS: '0x0000000000000000000000000000000000000000'
  #      THRESHOLD: 0.5 # ETH
  #      RPC_URL: https://mainnet.infura.io
  #      BLOCK_EXPLORER: etherscan.io

  redis:
    image: redis
    restart: always
    command: [redis-server, --appendonly, 'yes']
    volumes:
      - redis:/data

  nginx:
    image: nginx:alpine
    container_name: nginx
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - certs:/etc/nginx/certs
    logging:
      driver: none

  dockergen:
    image: poma/docker-gen
    container_name: dockergen
    restart: always
    command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
    volumes_from:
      - nginx
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt
    restart: always
    environment:
      NGINX_DOCKER_GEN_CONTAINER: dockergen
    volumes_from:
      - nginx
      - dockergen

volumes:
  conf:
  vhost:
  html:
  certs:
  redis:
