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

272 lines
7.1 KiB
YAML

networks:
servicesNetwork:
driver: bridge
volumes:
sqlite_data:
prom_data:
grafana_data:
rabbitmq_data:
services:
rabbitmq:
image: rabbitmq:3.13-management
container_name: rabbitmq
ports:
- "127.0.0.1:5672:5672"
- "127.0.0.1:15672:15672"
- "127.0.0.1:15692:15692"
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
command: >
sh -lc "rabbitmq-plugins enable --offline rabbitmq_prometheus && exec docker-entrypoint.sh rabbitmq-server"
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
interval: 5s
timeout: 3s
retries: 20
start_period: 10s
volumes:
- rabbitmq_data:/var/lib/rabbitmq
networks: [servicesNetwork]
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
prometheus:
image: prom/prometheus:latest
depends_on: [rabbitmq]
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
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
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
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
mongo-service:
build:
context: .
dockerfile: app/services/mongo/Dockerfile
depends_on:
rabbitmq:
condition: service_healthy
env_file: [.env]
environment:
SERVICE_NAME: "mongo-service"
PRODUCE_KEY: "mongo.service.publish"
CONSUME_BINDINGS: "database.service.publish,mail.service.publish"
RABBITMQ_URL: "amqp://admin:admin@rabbitmq:5672/"
EXCHANGE_EVENTS: "app.events"
PRODUCE_BURST: "10"
PRODUCE_ONCE: "true"
EVENT_TYPE: "mongo-event"
RETRY_DELAY_MS: "5000"
MAX_RETRIES: "3"
PREFETCH: "5"
IGNORE_SELF_PRODUCED: "true"
networks: [servicesNetwork]
restart: unless-stopped
logging:
driver: "json-file"
options: { max-size: "10m", max-file: "3" }
db-service:
build:
context: .
dockerfile: app/services/database/Dockerfile
depends_on:
rabbitmq:
condition: service_healthy
networks: [servicesNetwork]
env_file: [.env]
environment:
SERVICE_NAME: "database-service"
PRODUCE_KEY: "database.service.publish"
CONSUME_BINDINGS: "parser.comment.publish,"
RABBITMQ_URL: amqp://admin:admin@rabbitmq:5672/
EXCHANGE_EVENTS: "app.events"
PRODUCE_ONCE: "true"
RETRY_DELAY_MS: "5000"
MAX_RETRIES: "3"
PREFETCH: "5"
IGNORE_SELF_PRODUCED: "true"
volumes:
- ./app/services/database/venv:/opt/venv
- ./app/services/database/.prisma-cache:/root/.cache/prisma-python
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
mail-service:
build:
context: .
dockerfile: app/services/mail/Dockerfile
env_file: [.env]
depends_on:
rabbitmq:
condition: service_healthy
environment:
SERVICE_NAME: "mail-service"
PRODUCE_KEY: "mail.service.publish"
CONSUME_BINDINGS: "database.service.publish,mongo.service.publish"
RABBITMQ_URL: amqp://admin:admin@rabbitmq:5672/
EXCHANGE_EVENTS: "app.events"
PRODUCE_ONCE: "true"
RETRY_DELAY_MS: "5000"
MAX_RETRIES: "3"
PREFETCH: "5"
IGNORE_SELF_PRODUCED: "true"
networks: [servicesNetwork]
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
parser-mail-service:
build:
context: .
dockerfile: app/services/parser/mail/Dockerfile
env_file: [.env]
depends_on:
rabbitmq:
condition: service_healthy
environment:
SERVICE_NAME: "parser-mail-service"
RABBITMQ_URL: amqp://admin:admin@rabbitmq:5672/
EXCHANGE_EVENTS: "app.events"
CONSUME_BINDINGS: "mail.service.publish,"
PRODUCE_KEY: "parser.mail.publish"
RETRY_DELAY_MS: "5000"
MAX_RETRIES: "3"
PREFETCH: "5"
IGNORE_SELF_PRODUCED: "true"
networks: [servicesNetwork]
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
parser-excel-service:
build:
context: .
dockerfile: app/services/parser/excel/Dockerfile
env_file: [.env]
depends_on:
rabbitmq:
condition: service_healthy
environment:
SERVICE_NAME: "parser-excel-service"
RABBITMQ_URL: amqp://admin:admin@rabbitmq:5672/
EXCHANGE_EVENTS: "app.events"
CONSUME_BINDINGS: "parser.mail.publish,"
PRODUCE_KEY: "parser.excel.publish"
PRODUCE_ONCE: "true"
RETRY_DELAY_MS: "5000"
MAX_RETRIES: "3"
PREFETCH: "5"
IGNORE_SELF_PRODUCED: "true"
networks: [servicesNetwork]
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
parser-comment-service:
build:
context: .
dockerfile: app/services/parser/comment/Dockerfile
env_file: [.env]
depends_on:
rabbitmq:
condition: service_healthy
environment:
SERVICE_NAME: "parser-comment-service"
RABBITMQ_URL: amqp://admin:admin@rabbitmq:5672/
EXCHANGE_EVENTS: "app.events"
CONSUME_BINDINGS: "parser.excel.publish,"
PRODUCE_KEY: "parser.comment.publish"
PRODUCE_ONCE: "true"
RETRY_DELAY_MS: "5000"
MAX_RETRIES: "3"
PREFETCH: "5"
IGNORE_SELF_PRODUCED: "true"
networks: [servicesNetwork]
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
parser-payment-service:
build:
context: .
dockerfile: app/services/parser/payment/Dockerfile
env_file: [.env]
depends_on:
rabbitmq:
condition: service_healthy
environment:
SERVICE_NAME: "parser-payment-service"
RABBITMQ_URL: amqp://admin:admin@rabbitmq:5672/
EXCHANGE_EVENTS: "app.events"
CONSUME_BINDINGS: "parser.comment.publish"
PRODUCE_KEY: "parser.payment.publish"
PRODUCE_ONCE: "true"
RETRY_DELAY_MS: "5000"
MAX_RETRIES: "3"
PREFETCH: "5"
IGNORE_SELF_PRODUCED: "true"
networks: [servicesNetwork]
restart: unless-stopped
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"