version: "3"
services:
  mongodb:
    image: mongo
    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'
    command: |
      /bin/sh -c "./bin/elasticsearch-plugin list | grep -q ingest-attachment || yes | ./bin/elasticsearch-plugin install --silent ingest-attachment;      
      /usr/local/bin/docker-entrypoint.sh eswrapper"
    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
      - transactor
    ports:
      - 3003:3003
    environment:
      - ACCOUNT_PORT=3003
      - SERVER_SECRET=secret
      - MONGO_URL=mongodb://mongodb:27018
      - TRANSACTOR_URL=ws://transactor:3334
      - ENDPOINT_URL=ws://localhost:3334
      - MINIO_ENDPOINT=minio
      - MINIO_ACCESS_KEY=minioadmin
      - MINIO_SECRET_KEY=minioadmin
  collaborator:
    image: hardcoreeng/collaborator
    links:
      - transactor
    ports:
      - 3079:3079
    environment:
      - COLLABORATOR_PORT=3079
      - SECRET=secret
      - MINIO_ENDPOINT=minio
      - MINIO_ACCESS_KEY=minioadmin
      - MINIO_SECRET_KEY=minioadmin      
  front:
    image: hardcoreeng/front
    pull_policy: never
    links:
      - account
      - mongodb
      - minio
      - elastic
      - transactor
      - collaborator
    ports:
      - 8083:8083
    environment:
      - SERVER_PORT=8083
      - SERVER_SECRET=secret
      - ACCOUNTS_URL=http://localhost:3003
      - COLLABORATOR_URL=ws://localhost:3079
      - UPLOAD_URL=/files
      - TRANSACTOR_URL=ws://localhost:3334
      - ELASTIC_URL=http://elastic:9200
      - MINIO_ENDPOINT=minio
      - MINIO_ACCESS_KEY=minioadmin
      - MINIO_SECRET_KEY=minioadmin
  transactor:
    image: hardcoreeng/transactor
    pull_policy: never
    links:
      - mongodb
      - elastic
      - minio
      - rekoni
    ports:
      - 3334:3334
    environment:
      - SERVER_PORT=3334
      - SERVER_SECRET=secret
      - ELASTIC_URL=http://elastic:9200
      - MONGO_URL=mongodb://mongodb:27018
      - METRICS_CONSOLE=true
      - MINIO_ENDPOINT=minio
      - MINIO_ACCESS_KEY=minioadmin
      - MINIO_SECRET_KEY=minioadmin  
      - REKONI_URL=http://rekoni:4005
      - FRONT_URL=http://localhost:8083
  rekoni:
    image: hardcoreeng/rekoni-service
    restart: on-failure
    ports:
      - 4004:4005
    deploy:
      resources:
        limits:
          memory: 1024M