# https://docs.docker.com/compose/compose-file/compose-file-v3
# https://docs.docker.com/engine/reference/commandline/compose/
version: '3'
services:
  prometheus:
    image: prom/prometheus
    ports:
      - 9090:9090
    volumes:
      - ./prometheus_data:/prometheus
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    networks:
      - load-balancer

  grafana:
    image: grafana/grafana
    ports:
      - 3000:3000
    volumes:
      - ./grafana_data:/var/lib/grafana
    #  - ./grafana.ini:/etc/grafana/grafana.ini
    networks:
      - load-balancer
    depends_on:
      - prometheus

  underpost-engine:
    build:
      dockerfile: ./Dockerfile
      context: . # workdir path
    # image: underpost-engine
    # container_name: <name> ignore for replicas
    ports:
      - '22'
      - '80' # host port allocated dynamically, host ports are unique independent of replicas
      - '443'
      - '3306'
      - '27017'
      - '4001-4002:3001'
      - '3002-3020'
    volumes:
      - ./logs:/code/logs
    deploy:
      mode: replicated
      replicas: 2
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
        window: 120s
      resources:
        limits:
          cpus: '2'
          memory: 400M
        reservations:
          cpus: '0.25'
          memory: 20M
    labels: # labels in Compose file instead of Dockerfile
      engine.version: '2.8.838'
    networks:
      - load-balancer

networks:
  load-balancer:
    driver: bridge
