Files
aiform_prod/docker-compose.full.yml

138 lines
3.5 KiB
YAML
Raw Permalink Normal View History

version: '3.8'
services:
# PostgreSQL для логов, метрик, аналитики
postgres:
image: postgres:16-alpine
container_name: erv_postgres
restart: unless-stopped
environment:
POSTGRES_DB: erv_platform
POSTGRES_USER: erv_user
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-erv_secure_pass_2024}
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
ports:
- "5433:5432" # 5433 чтобы не конфликтовать с системным PostgreSQL
volumes:
- postgres_data:/var/lib/postgresql/data
- ./backend/db/init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- erv_network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U erv_user -d erv_platform"]
interval: 10s
timeout: 5s
retries: 5
# Redis для кеширования, сессий, rate limiting
redis:
image: redis:7-alpine
container_name: erv_redis
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD:-redis_secure_pass_2024} --appendonly yes
ports:
- "6380:6379" # 6380 чтобы не конфликтовать с системным Redis
volumes:
- redis_data:/data
networks:
- erv_network
healthcheck:
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
interval: 10s
timeout: 3s
retries: 5
# pgAdmin для управления PostgreSQL (опционально)
pgadmin:
image: dpage/pgadmin4:latest
container_name: erv_pgadmin
restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL:-admin@erv.local}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD:-admin}
PGADMIN_LISTEN_PORT: 80
ports:
- "5050:80"
volumes:
- pgadmin_data:/var/lib/pgadmin
networks:
- erv_network
depends_on:
- postgres
# FastAPI Backend
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: erv_backend
restart: unless-stopped
env_file:
- .env
environment:
# Database
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
POSTGRES_DB: erv_platform
POSTGRES_USER: erv_user
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-erv_secure_pass_2024}
# Redis
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: ${REDIS_PASSWORD:-redis_secure_pass_2024}
# RabbitMQ (внешний)
RABBITMQ_HOST: ${RABBITMQ_HOST:-185.197.75.249}
RABBITMQ_PORT: ${RABBITMQ_PORT:-5672}
RABBITMQ_USER: ${RABBITMQ_USER:-admin}
RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD:-tyejvtej}
# API URLs
OCR_SERVICE_URL: ${OCR_SERVICE_URL:-http://147.45.146.17:8001}
ports:
- "8100:8000"
volumes:
- ./backend/app:/app/app
- ./backend/logs:/app/logs
- uploads:/app/uploads
networks:
- erv_network
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
# React Frontend
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: erv_frontend
restart: unless-stopped
ports:
- "5173:3000"
environment:
- VITE_API_URL=http://147.45.146.17:8100
networks:
- erv_network
depends_on:
- backend
networks:
erv_network:
driver: bridge
volumes:
postgres_data:
driver: local
redis_data:
driver: local
pgadmin_data:
driver: local
uploads:
driver: local