version: '2'
services:
  fabmanager:
    image: sleede/fab-manager
    environment:
      RAILS_ENV: production
      RACK_ENV: production
    env_file:
      - ./config/env
    user: USER_ID
    volumes:
      - ./public/packs:/usr/src/app/public/packs
      - ./public/uploads:/usr/src/app/public/uploads
      - ./invoices:/usr/src/app/invoices
      - ./payment_schedules:/usr/src/app/payment_schedules
      - ./exports:/usr/src/app/exports
      - ./imports:/usr/src/app/imports
      - ./supporting_document_files:/usr/src/app/supporting_document_files
      - ./log:/var/log/supervisor
      - ./plugins:/usr/src/app/plugins
      - ./accounting:/usr/src/app/accounting
      - ./config/auth_provider.yml:/usr/src/app/config/auth_provider.yml
    depends_on:
      - postgres
      - redis
      - elasticsearch
    restart: always
  postgres:
    image: postgres:9.6
    volumes:
      - ./postgresql:/var/lib/postgresql/data
    restart: always
    environment:
      POSTGRES_HOST_AUTH_METHOD: trust
  elasticsearch:
    image: elasticsearch:5.6
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m -Dlog4j2.formatMsgNoLookups=true"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./elasticsearch/config:/usr/share/elasticsearch/config
      - ./elasticsearch:/usr/share/elasticsearch/data
    restart: always
  redis:
    image: redis:6-alpine
    volumes:
      - ./redis:/data
    restart: always
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./config/nginx:/etc/nginx/conf.d
      - ./letsencrypt/etc:/etc/letsencrypt
      - ./log:/var/log/nginx
    volumes_from:
      - fabmanager:ro
    links:
      - fabmanager:fabmanager
    restart: always