version: '3.7'

services:
  nginx:
    image: nginx:1.15.10-alpine
    volumes:
      - ./local-storage/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./local-storage/nginx/nginx-http.conf:/etc/nginx/nginx.conf
    command: [nginx-debug, '-g', 'daemon off;']
    restart: always
  api:
    image: samtecspg/articulate-api:1.0.0
    environment:
      - AGENT_LIMIT=${AGENT_LIMIT:--1}
    restart: always
  ui:
    image: samtecspg/articulate-ui:1.0.0
    restart: always
  rasa:
    image: samtecspg/articulate-rasa:1.0.0
    volumes: ["${MODEL_DIR:-./local-storage/rasa/nlu-model}:/app/projects", "${RASA_CONFIG:-./local-storage/rasa/rasa-config.yml}:/app/config.yml", "./local-storage/rasa/logs:/app/logs"]
  duckling:
    image: samtecspg/duckling:0.1.6.0
  redis:
    image: redis:4.0.6-alpine
    command: redis-server --appendonly yes
    volumes:
      - ${REDIS_DATA:-./local-storage/redis-data}:/data
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_TAG:-7.1.1}
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ${ES_CONFIG:-./local-storage/elasticsearch/config/elasticsearch.yml}:/usr/share/elasticsearch/config/elasticsearch.yml
      - ${ES_DATA:-./local-storage/elasticsearch/data}:/usr/share/elasticsearch/data
      - ${ES_DATA:-./local-storage/elasticsearch/docker-healthcheck.sh}:/usr/share/docker-healthcheck.sh
  filebeat:
    image: docker.elastic.co/beats/filebeat:${ELASTIC_VERSION:-7.1.1}
    user: root
    volumes:
      - ./local-storage/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - ./local-storage/filebeat/data:/usr/share/filebeat/data
      - /var/run/docker.sock:/var/run/docker.sock
      # This is needed for filebeat to load container log path as specified in filebeat.yml
      - /var/lib/docker/containers/:/var/lib/docker/containers/:ro
      # This is needed for filebeat to load logs for system and auth modules
      - /var/log/:/var/log/:ro
    environment:
      - ELASTICSEARCH_HOST=${ELASTICSEARCH_HOST:-elasticsearch}
    command: ["--strict.perms=false"]