Добавлен файл
This commit is contained in:
1 parent
0adc7dc928
commit
130e6968be
1 file changed
+190
@@ -0,0 +1,190 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
# PostgreSQL with TimescaleDB
|
||||
postgres:
|
||||
image: timescale/timescaledb:latest-pg16
|
||||
container_name: cloudplatform-postgres
|
||||
environment:
|
||||
POSTGRES_DB: cloudplatform
|
||||
POSTGRES_USER: cloudplatform
|
||||
POSTGRES_PASSWORD: ${CP_PG_PASSWORD}
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
ports:
|
||||
- 5432:5432
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- pg_isready -U cloudplatform
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- cloudplatform-network
|
||||
# Redis
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: cloudplatform-redis
|
||||
command: redis-server --requirepass ${CP_REDIS_PASSWORD} --maxmemory
|
||||
512mb --maxmemory-policy allkeys-lru
|
||||
ports:
|
||||
- 6379:6379
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- redis-cli
|
||||
- --raw
|
||||
- incr
|
||||
- ping
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- cloudplatform-network
|
||||
# RabbitMQ (Message Queue for Celery)
|
||||
rabbitmq:
|
||||
image: rabbitmq:3.13-management-alpine
|
||||
container_name: cloudplatform-rabbitmq
|
||||
environment:
|
||||
RABBITMQ_DEFAULT_USER: cloudplatform
|
||||
RABBITMQ_DEFAULT_PASS: ${CP_RABBITMQ_PASSWORD}
|
||||
ports:
|
||||
- 5672:5672
|
||||
- 15672:15672 # Management UI
|
||||
volumes:
|
||||
- rabbitmq_data:/var/lib/rabbitmq
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD
|
||||
- rabbitmq-diagnostics
|
||||
- ping
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
networks:
|
||||
- cloudplatform-network
|
||||
# Backend API
|
||||
api:
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
container_name: cloudplatform-api
|
||||
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||||
volumes:
|
||||
- ./backend:/app
|
||||
ports:
|
||||
- 8000:8000
|
||||
environment:
|
||||
- ENVIRONMENT=development
|
||||
- DEBUG=true
|
||||
- LOG_LEVEL=debug
|
||||
- DATABASE_URL=postgresql+asyncpg://cloudplatform:${CP_PG_PASSWORD}@postgres:5432/cloudplatform
|
||||
- REDIS_URL=redis://:${CP_REDIS_PASSWORD}@redis:6379/0
|
||||
- CELERY_BROKER_URL=amqp://cloudplatform:${CP_RABBITMQ_PASSWORD}@rabbitmq:5672//
|
||||
- CELERY_RESULT_BACKEND=redis://:${CP_REDIS_PASSWORD}@redis:6379/1
|
||||
- JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production-min-32-chars
|
||||
- CORS_ORIGINS=http://localhost:3000,http://localhost:5173,http://192.168.31.100:3000,http://192.168.31.100:3000
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- cloudplatform-network
|
||||
# Celery Worker
|
||||
celery-worker:
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
container_name: cloudplatform-celery-worker
|
||||
command: celery -A app.tasks.celery_app worker --loglevel=info --concurrency=2
|
||||
volumes:
|
||||
- ./backend:/app
|
||||
environment:
|
||||
- ENVIRONMENT=development
|
||||
- DATABASE_URL=postgresql+asyncpg://cloudplatform:${CP_PG_PASSWORD}@postgres:5432/cloudplatform
|
||||
- REDIS_URL=redis://:${CP_REDIS_PASSWORD}@redis:6379/0
|
||||
- CELERY_BROKER_URL=amqp://cloudplatform:${CP_RABBITMQ_PASSWORD}@rabbitmq:5672//
|
||||
- CELERY_RESULT_BACKEND=redis://:${CP_REDIS_PASSWORD}@redis:6379/1
|
||||
- JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production-min-32-chars
|
||||
depends_on:
|
||||
- postgres
|
||||
- redis
|
||||
- rabbitmq
|
||||
networks:
|
||||
- cloudplatform-network
|
||||
# Celery Beat (Periodic Tasks)
|
||||
celery-beat:
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
container_name: cloudplatform-celery-beat
|
||||
command: celery -A app.tasks.celery_app beat --loglevel=info
|
||||
volumes:
|
||||
- ./backend:/app
|
||||
environment:
|
||||
- ENVIRONMENT=development
|
||||
- DATABASE_URL=postgresql+asyncpg://cloudplatform:${CP_PG_PASSWORD}@postgres:5432/cloudplatform
|
||||
- REDIS_URL=redis://:${CP_REDIS_PASSWORD}@redis:6379/0
|
||||
- CELERY_BROKER_URL=amqp://cloudplatform:${CP_RABBITMQ_PASSWORD}@rabbitmq:5672//
|
||||
- CELERY_RESULT_BACKEND=redis://:${CP_REDIS_PASSWORD}@redis:6379/1
|
||||
- JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production-min-32-chars
|
||||
depends_on:
|
||||
- postgres
|
||||
- redis
|
||||
- rabbitmq
|
||||
networks:
|
||||
- cloudplatform-network
|
||||
# Flower (Celery monitoring)
|
||||
flower:
|
||||
build:
|
||||
context: ./backend
|
||||
dockerfile: Dockerfile
|
||||
container_name: cloudplatform-flower
|
||||
command: celery -A app.tasks.celery_app flower --port=5555
|
||||
ports:
|
||||
- 5555:5555
|
||||
environment:
|
||||
- ENVIRONMENT=development
|
||||
- DATABASE_URL=postgresql+asyncpg://cloudplatform:${CP_PG_PASSWORD}@postgres:5432/cloudplatform
|
||||
- REDIS_URL=redis://:${CP_REDIS_PASSWORD}@redis:6379/0
|
||||
- CELERY_BROKER_URL=amqp://cloudplatform:${CP_RABBITMQ_PASSWORD}@rabbitmq:5672//
|
||||
- CELERY_RESULT_BACKEND=redis://:${CP_REDIS_PASSWORD}@redis:6379/1
|
||||
- JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production-min-32-chars
|
||||
depends_on:
|
||||
- rabbitmq
|
||||
- redis
|
||||
networks:
|
||||
- cloudplatform-network
|
||||
# Frontend (React)
|
||||
frontend:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile.dev
|
||||
container_name: cloudplatform-frontend
|
||||
volumes:
|
||||
- ./frontend:/app
|
||||
- /app/node_modules
|
||||
ports:
|
||||
- 3000:3000
|
||||
environment:
|
||||
- VITE_API_URL=http://192.168.31.100:8000/api/v1
|
||||
depends_on:
|
||||
- api
|
||||
networks:
|
||||
- cloudplatform-network
|
||||
volumes:
|
||||
postgres_data:
|
||||
driver: local
|
||||
redis_data:
|
||||
driver: local
|
||||
rabbitmq_data:
|
||||
driver: local
|
||||
networks:
|
||||
cloudplatform-network:
|
||||
driver: bridge
|
||||
Reference in new issue
Block a user