version: '3.8' # Определение общих сетей для изоляции трафика networks: ai_mesh: driver: bridge services: # ---------------------------------------------------- # SERVICE 1: Frontend (Пользовательский интерфейс) # Не требует GPU, может быть вынесен на отдельный сервер # ---------------------------------------------------- web_ui: build: context: . dockerfile: Dockerfile container_name: emom_frontend restart: always ports: - "8080:8080" networks: - ai_mesh environment: - STREAMLIT_RUN=1 # Указываем UI, где искать LLM-бэкенд (внутри Docker-сети) - OLLAMA_HOST=http://llm_backend:11434 volumes: - ./src:/app/src # Модели пока остаются здесь, так как код монолитный, # но архитектурно сервис уже изолирован - /home/zin/projects/Thesis/src/emoset_resnet50_best.pth:/app/emoset_resnet50_best.pth:ro - /home/zin/projects/Thesis/src/music_engine/va_regressor.pkl:/app/src/music_engine/va_regressor.pkl:ro - /home/zin/projects/Thesis/dataset/DEAM:/app/dataset/DEAM:ro # Временно оставляем GPU для PyTorch (пока он не вынесен в API) deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] # ---------------------------------------------------- # SERVICE 2: LLM Inference Backend (Ollama) # Изолированный сервис для языковой модели на GPU # ---------------------------------------------------- llm_backend: image: ollama/ollama:latest container_name: ollama_gpu_inference restart: always networks: - ai_mesh ports: - "11434:11434" volumes: # Проброс локальных моделей Ollama, чтобы не качать их заново внутри докера - ~/.ollama:/root/.ollama deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu]