-
Шаронов Егор Алексеевич authored
version: "3.9"
services:
db:
image: timescale/timescaledb-ha:pg17.2-ts2.17.2-all
container_name: timescaledb
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: secret
POSTGRES_DB: products_db
ports:
- "5435:5432"
volumes:
- db-data:/var/lib/postgresql/data
- ../migrations/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
vectorizer-worker:
image: timescale/pgai-vectorizer-worker:0.2.0
environment:
PGAI_VECTORIZER_WORKER_DB_URL: postgres://postgres:secret@timescaledb:5432/products_db
PGAI_VECTORIZER_OLLAMA_MAX_CHUNKS_PER_BATCH: 4096
OLLAMA_HOST: http://ollama:11434
command: [ "--poll-interval", "5s" ]
depends_on:
- db
- ollama
restart: always
zookeeper:
image: bitnami/zookeeper:latest
container_name: zookeeper
environment:
ALLOW_ANONYMOUS_LOGIN: "yes"
ports:
- "2181:2181"
volumes:
- zookeeper-data:/bitnami/zookeeper
kafka:
image: bitnami/kafka:latest
container_name: kafka
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
ALLOW_PLAINTEXT_LISTENER: "yes"
ports:
- "9092:9092"
depends_on:
- zookeeper
otel-collector:
image: otel/opentelemetry-collector-contrib:latest
container_name: otel-collector
command: ["--config=/etc/otel-collector-config.yaml"]
volumes:
- ./config/otel-collector-config.yaml:/etc/otel-collector-config.yaml:ro
ports:
- "4317:4317" # gRPC receiver для OTLP
- "4318:4318" # HTTP receiver для OTLP
jaeger:
container_name: jaeger
image: jaegertracing/all-in-one:1.49
ports:
- "16686:16686"
- "4317"
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:v0.7.2
ports:
- "8071:8080"
environment:
KAFKA_CLUSTERS_0_NAME: "local"
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: "kafka:9092"
depends_on:
- kafka
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- ollama-models:/models
- ./ollama-entrypoint.sh:/entrypoint.sh:ro
entrypoint: [ "/entrypoint.sh" ]
app:
image: registry.miem.hse.ru/edadil/ms/model
container_name: app
environment:
- SERVER_AppName=ProductAssistant
- SERVER_Port=8080
- SERVER_Secret=secret
- DATABASE_HOSTNAME=timescaledb
- DATABASE_PORT=5432
- DATABASE_USER=postgres
- DATABASE_PASSWORD=secret
- DATABASE_DBNAME=products_db
- LLM_Embedder=bge-m3
- LLM_MODEL_NAME=mistral-large-latest
- LLM_API_KEY=ZdDk5S3QxaEytpf9DWXM2nEb6GVHuF9y
- LLM_ENDPOINT=http://ollama:11434
- KAFKA_BOOTSTRAP_SERVERS=kafka:9092
- KAFKA_PRODUCER_TOPIC=price_changes
- KAFKA_CONSUMER_TOPIC=price_changes
- KAFKA_CONSUMER_GROUP_ID=notifications_group
- OTEL_OTLP_ENDPOINT=http://otel-collector:4317
- OTEL_OTLP_INSECURE=true
- OTEL_OTLP_TIMEOUT=10s
- OTEL_OTLP_HTTP=false
- OTEL_RETRY_ENABLED=true
- OTEL_RETRY_INITIAL_INTERVAL=5s
- OTEL_RETRY_MAX_INTERVAL=30s
- OTEL_RETRY_MAX_ELAPSED_TIME=1m
- TELEGRAM_BOT_TOKEN=7462491902:AAFzBoYhmy8OeRB_1iu2YapOL03vGWXmo8I
- TELEGRAM_JWT_SECRET=secret
ports:
- "8080:8080"
depends_on:
- db
- kafka
- ollama
- otel-collector
profiles:
- full
volumes:
db-data:
141142143
zookeeper-data:
kafka-data:
ollama-models: