version: "2.2"

services:
  app:
    image: pathogen/monolith:latest
    container_name: monolith
    build: ${PORTAINER_GIT_DIR}/docker
    volumes:
      - ${PORTAINER_GIT_DIR}:/code
    env_file:
      - ../stack.env
    networks:
      - default
      - pathogen
      - elastic

  threshold:
    image: pathogen/threshold:latest
    container_name: threshold
    build: ../legacy/docker
    volumes:
      - ${PORTAINER_GIT_DIR}:/code
      - ${THRESHOLD_CONFIG_DIR}:/code/legacy/conf/live
      #- ${THRESHOLD_TEMPLATE_DIR}:/code/conf/templates
      - ${THRESHOLD_CERT_DIR}:/code/legacy/conf/cert
    volumes_from:
      - tmp
    ports:
      - "${THRESHOLD_LISTENER_PORT}:${THRESHOLD_LISTENER_PORT}"
      - "${THRESHOLD_RELAY_PORT}:${THRESHOLD_RELAY_PORT}"
      - "${THRESHOLD_API_PORT}:${THRESHOLD_API_PORT}"
    env_file:
      - ../stack.env
    # for development
    extra_hosts:
      - "host.docker.internal:host-gateway"
    networks:
      - default

  ssdb:
    image: tsl0922/ssdb
    container_name: ssdb_monolith
    ports:
      - "1289:1289"
    environment:
      - SSDB_PORT=1289
    networks:
      - default

  tmp:
    image: busybox
    container_name: tmp_monolith
    command: chmod -R 777 /var/run/socks
    volumes:
      - /var/run/socks

  redis:
    image: redis
    container_name: redis_monolith
    command: redis-server /etc/redis.conf
    ulimits:
      nproc: 65535
      nofile:
         soft: 65535
         hard: 65535
    volumes:
      - ${PORTAINER_GIT_DIR}/docker/redis.conf:/etc/redis.conf
      - redis_data:/data
    volumes_from:
      - tmp
    healthcheck:
      test: "redis-cli -s /var/run/socks/redis.sock ping"
      interval: 2s
      timeout: 2s
      retries: 15

networks:
  default:
    driver: bridge
  pathogen:
    external: true
  elastic:
    external: true

volumes:
  redis_data:
