networks: servicesNetwork: driver: bridge volumes: sqlite_data: prom_data: grafana_data: nats_data: nui_data: services: nats: image: nats:latest command: ["-js", "-m", "8222"] ports: - "4222:4222" - "8222:8222" volumes: - ./app/core/nats/nats.conf:/etc/nats/nats.conf:ro - nats_data:/data/jetstream networks: [servicesNetwork] restart: unless-stopped nats-exporter: image: natsio/prometheus-nats-exporter:latest command: - "-varz" - "-connz" - "-subz" - "-routez" - "-jsz=all" - "http://nats:8222" depends_on: [nats] expose: - "7777" networks: [servicesNetwork] restart: unless-stopped prometheus: image: prom/prometheus:latest depends_on: [nats-exporter] networks: [servicesNetwork] volumes: - ./monitor/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prom_data:/prometheus command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus" - "--web.enable-lifecycle" ports: - "9090:9090" restart: unless-stopped grafana: image: grafana/grafana:latest depends_on: [prometheus] networks: [servicesNetwork] environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false volumes: - grafana_data:/var/lib/grafana - ./monitor/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro ports: - "3000:3000" restart: unless-stopped nats-ui: image: ghcr.io/nats-nui/nui:latest ports: - "127.0.0.1:31311:31311" networks: [servicesNetwork] volumes: - nui_data:/db restart: unless-stopped db-service: build: context: . dockerfile: app/services/database/Dockerfile depends_on: [nats] networks: [servicesNetwork] env_file: [.env] environment: NATS_URL: "nats://nats:4222" JS_STREAM: "ACCOUNT_SERVICES_DATABASE" JS_TASKS_SUBJECT: "ACCOUNT.SERVICES.DATABASE.TASKS" JS_PUBLISH_SUBJECT: "ACCOUNT.SERVICES.DATABASE.PUBLISH" JS_DURABLE: "DB_WORKERS" BATCH_SIZE: "5" ACK_WAIT_SEC: "30" MAX_DELIVER: "3" SQLITE_PATH: "/app/data/queue.db" TASK_TYPE: "db-task" CONSUME_SLEEP_SEC: "0.5" SERVICE_NAME: "db-service" METRICS_PORT: "8000" volumes: - sqlite_data:/app/data restart: unless-stopped # mail-service: # build: # context: . # dockerfile: app/services/mail/Dockerfile # volumes: # - sqlite_data:/app/data # env_file: [.env] # environment: # REDIS_STREAM_PUBLISH: ACCOUNT:SERVICES:MAIL:PUBLISH # REDIS_STREAM_TASKS: ACCOUNT:SERVICES:MAIL:TASKS # CONSUME_BACKLOG: true # depends_on: [redis] # networks: [servicesNetwork] # restart: unless-stopped # logging: # driver: "json-file" # options: # max-size: "10m" # max-file: "3" # queue-service: # build: # context: . # dockerfile: app/services/queue/Dockerfile # volumes: # - sqlite_data:/app/data # env_file: [.env] # environment: # REDIS_STREAM_PUBLISH: ACCOUNT:SERVICES:QUEUE:PUBLISH # REDIS_STREAM_TASKS: ACCOUNT:SERVICES:QUEUE:TASKS # depends_on: [redis] # networks: [servicesNetwork] # restart: unless-stopped # logging: # driver: "json-file" # options: # max-size: "10m" # max-file: "3" # tester: # build: # context: . # dockerfile: app/services/test/Dockerfile # volumes: # - sqlite_data:/app/data # env_file: [.env] # environment: # REDIS_STREAM_DATABASE_PUBLISH: ACCOUNT:SERVICES:DATABASE:PUBLISH # REDIS_STREAM_DATABASE_TASKS: ACCOUNT:SERVICES:DATABASE:TASKS # REDIS_STREAM_MAIL_PUBLISH: ACCOUNT:SERVICES:MAIL:PUBLISH # REDIS_STREAM_MAIL_TASKS: ACCOUNT:SERVICES:MAIL:TASKS # REDIS_STREAM_QUEUE_PUBLISH: ACCOUNT:SERVICES:QUEUE:PUBLISH # REDIS_STREAM_QUEUE_TASKS: ACCOUNT:SERVICES:QUEUE:TASKS # depends_on: # - redis # # - db-service # # - mail-service # # - queue-service # networks: [servicesNetwork] # restart: "no" # logging: # driver: "json-file" # options: # max-size: "10m" # max-file: "3"