services:
  mongodb:
    image: 'mongo:7-jammy'
    command: mongod --port 27018
    environment:
      - PUID=1000
      - PGID=1000
    ports:
      - 27018:27018
    restart: unless-stopped
  minio:
    image: 'minio/minio'
    command: server /data --address ":9000" --console-address ":9001"
    expose:
      - 9000
    ports:
      - 9002:9000
  elastic:
    image: 'elasticsearch:7.14.2'
    expose:
      - 9200
    ports:
      - 9201:9200
    environment:
      - ELASTICSEARCH_PORT_NUMBER=9200
      - BITNAMI_DEBUG=true
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms1024m -Xmx1024m
    healthcheck:
      interval: 20s
      retries: 10
      test: curl -s http://localhost:9200/_cluster/health | grep -vq '"status":"red"'
  account:
    image: hardcoreeng/account
    pull_policy: never
    links:
      - mongodb
      - minio
    ports:
      - 3003:3003
    volumes:
      - ./branding-test.json:/var/cfg/branding.json
    environment:
      - ACCOUNT_PORT=3003
      - SERVER_SECRET=secret
      - MONGO_URL=mongodb://mongodb:27018
      - TRANSACTOR_URL=ws://transactor:3334;ws://localhost:3334
      - STORAGE_CONFIG=${STORAGE_CONFIG}
      - MODEL_ENABLED=*
      - BRANDING_PATH=/var/cfg/branding.json
  front:
    image: hardcoreeng/front
    pull_policy: never
    links:
      - account
      - mongodb
      - minio
      - elastic
      - collaborator
      - transactor
    ports:
      - 8083:8083
    volumes:
      - ./branding-test.json:/app/dist/branding-test.json
    environment:
      - SERVER_PORT=8083
      - SERVER_SECRET=secret
      - ACCOUNTS_URL=http://localhost:3003
      - MONGO_URL=mongodb://mongodb:27018
      - UPLOAD_URL=/files
      - ELASTIC_URL=http://elastic:9200
      - GMAIL_URL=http://localhost:8088
      - CALENDAR_URL=http://localhost:8095
      - REKONI_URL=http://rekoni:4007
      - TELEGRAM_URL=http://localhost:8086
      - COLLABORATOR_URL=ws://localhost:3079
      - COLLABORATOR_API_URL=http://localhost:3079
      - STORAGE_CONFIG=${STORAGE_CONFIG}
      - BRANDING_URL=http://localhost:8083/branding-test.json
  transactor:
    image: hardcoreeng/transactor
    pull_policy: never
    links:
      - mongodb
      - elastic
      - minio
      - rekoni
      - account
    ports:
      - 3334:3334
    volumes:
      - ./branding-test.json:/var/cfg/branding.json
    environment:
      - SERVER_PROVIDER=${SERVER_PROVIDER}
      - SERVER_PORT=3334
      - SERVER_SECRET=secret
      - ELASTIC_URL=http://elastic:9200
      - MONGO_URL=mongodb://mongodb:27018
      - METRICS_CONSOLE=false
      - METRICS_FILE=metrics.txt
      - STORAGE_CONFIG=${STORAGE_CONFIG}
      - REKONI_URL=http://rekoni:7
      - FRONT_URL=http://localhost:8083
      - UPLOAD_URL=http://localhost:8083/files
      - ACCOUNTS_URL=http://account:3003
      - LAST_NAME_FIRST=true
      - ELASTIC_INDEX_NAME=local_storage_index
      - BRANDING_PATH=/var/cfg/branding.json
  collaborator:
    image: hardcoreeng/collaborator
    links:
      - mongodb
      - minio
      - transactor
    ports:
      - 3079:3078
    environment:
      - COLLABORATOR_PORT=3078
      - SECRET=secret
      - ACCOUNTS_URL=http://account:3003
      - UPLOAD_URL=/files
      - MONGO_URL=mongodb://mongodb:27018
      - STORAGE_CONFIG=${STORAGE_CONFIG}
    restart: unless-stopped
  rekoni:
    image: hardcoreeng/rekoni-service
    restart: on-failure
    ports:
      - 4007:4004
    deploy:
      resources:
        limits:
          memory: 1024M