version: '3'

services:
  nginx-proxy:
    depends_on:
      - web
    deploy:
      placement:
        constraints:
          - node.role == manager
    ports:
      - "80:80"
      # - "443:443"
    image: jwilder/nginx-proxy:latest
    volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - ./my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro
       # - ./certs:/etc/nginx/certs
  web:
    depends_on:
      - db
      - redis
    deploy:
      placement:
        constraints:
          - node.role == manager
    environment:
      - VIRTUAL_HOST=nopaque.localhost,129.70.216.233
    env_file: nopaque.env
    image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque:development
    volumes:
      - /mnt/nopaque:/mnt/nopaque
      - ./app:/home/nopaque/app
      - ./logs:/home/nopaque/logs
      - ./migrations:/home/nopaque/migrations
      - ./tests:/home/nopaque/tests
      - ./config.py:/home/nopaque/config.py
      - ./docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh
      - ./nopaque.py:/home/nopaque/nopaque.py
      - ./requirements.txt:/home/nopaque/requirements.txt
  daemon:
    depends_on:
      - db
    deploy:
      placement:
        constraints:
          - node.role == manager
    env_file: nopaque.env
    extra_hosts:
      - "host.docker.internal:172.17.0.1"
    image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque_daemon:latest
    volumes:
      - /mnt/nopaque:/mnt/nopaque
      - ./logs:/home/nopaqued/logs
      - ../opaque_daemon/docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh
      - ../opaque_daemon/nopaqued.py:/home/nopaqued/nopaqued.py
      - ../opaque_daemon/merge_corpus_files.py:/home/nopaqued/merge_corpus_files.py
      - ../opaque_daemon/requirements.txt:/home/nopaqued/requirements.txt
      - $HOME/.docker:/home/nopaqued/.docker
  db:
    deploy:
      placement:
        constraints:
          - node.role == manager
    env_file: nopaque.env
    image: postgres:11
    volumes:
      - /srv/nopaque/database:/var/lib/postgresql/data
  redis:
    deploy:
      placement:
        constraints:
          - node.role == manager
    image: redis:5