version: '3.8' services: backend: build: ./backend ports: - "8094:8000" environment: - APP_ENV=dev - DATABASE_URL=sqlite+aiosqlite:////app/data/app.db - S3_ENDPOINT_URL=http://minio:9000 - S3_REGION=us-east-1 - S3_ACCESS_KEY_ID=minioadmin - S3_SECRET_ACCESS_KEY=minioadmin - MEDIA_BUCKET=itcloud-media - JWT_SECRET=dev-secret-key-change-in-production - CORS_ORIGINS=http://192.168.1.8:8095,http://localhost:8095,http://localhost:3000 - REDIS_URL=redis://redis:6379/0 volumes: - ./backend/src:/app/src - backend-data:/app/data depends_on: - minio - redis command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload minio: image: minio/minio:latest ports: - "9090:9000" - "9091:9001" environment: - MINIO_ROOT_USER=minioadmin - MINIO_ROOT_PASSWORD=minioadmin volumes: - /mnt/data/s3:/data command: server /data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 minio-setup: image: minio/mc:latest depends_on: - minio entrypoint: > /bin/sh -c " sleep 5; /usr/bin/mc alias set myminio http://minio:9000 minioadmin minioadmin; /usr/bin/mc mb myminio/itcloud-media --ignore-existing; /usr/bin/mc anonymous set none myminio/itcloud-media; exit 0; " redis: image: redis:7-alpine ports: - "6388:6379" volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 30s timeout: 10s retries: 3 frontend: build: ./frontend ports: - "8095:5173" environment: - VITE_API_URL=http://192.168.1.8:8094 volumes: - ./frontend/src:/app/src - ./frontend/public:/app/public command: npm run dev -- --host 0.0.0.0 volumes: backend-data: redis-data: