production-evyos-systems-an.../ServicesTask/docker-compose.yml

171 lines
4.3 KiB
YAML

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"