version: '3'

services:
  web:
    depends_on:
      - db
      - redis
    deploy:
      placement:
        constraints:
          - node.role == manager
    env_file:
      - db.env
      - web.env
    image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque:development
    ports:
      - 5000:5000
    volumes:
      - storage:/mnt/opaque
      - ./app:/home/opaque/app
      - ./config.py:/home/opaque/config.py
      - ./logs:/home/opaque/logs
      - ./migrations:/home/opaque/migrations
      - ./opaque.py:/home/opaque/opaque.py
  daemon:
    depends_on:
      - db
    deploy:
      placement:
        constraints:
          - node.role == manager
    env_file:
      - db.env
      - web.env
    image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque_daemon:latest
    volumes:
      - ./logs:/home/opaque_daemon/logs
      - ../opaque_daemon/opaque_daemon.py:/home/opaque_daemon/opaque_daemon.py
      - $HOME/.docker/config.json:/home/opaque_daemon/.docker/config.json
  db:
    deploy:
      placement:
        constraints:
          - node.role == manager
    env_file: db.env
    image: postgres:alpine
    volumes:
      - /srv/opaque/database:/var/lib/postgresql/data
  redis:
    deploy:
      placement:
        constraints:
          - node.role == manager
    image: redis:alpine

volumes:
  storage:
    driver: local
    driver_opts:
      device: "//127.0.0.1/opaque_storage"
      o: "gid=1000,password=opaque,uid=1000,username=opaque"
      type: cifs