This guide covers deploying LinX (灵枢) using Docker Compose for development and staging environments.
- Docker 20.10 or later
- Docker Compose 2.0 or later
- At least 8GB RAM
- At least 50GB disk space
-
Clone the repository:
git clone https://github.com/asmoyou/LinX.git cd LinX -
Configure environment variables:
cp .env.example .env # Edit .env with your configuration -
Start the platform:
chmod +x infrastructure/scripts/start.sh ./infrastructure/scripts/start.sh all
-
Access the platform:
- Frontend: http://localhost:3000
- API: http://localhost:8000
- API Docs: http://localhost:8000/docs
- MinIO Console: http://localhost:9001
The Docker Compose setup includes the following services:
- PostgreSQL: Primary database for operational data
- Redis: Message bus and caching
- Milvus: Vector database for embeddings
- MinIO: Object storage for files
- etcd: Milvus metadata storage
- API Gateway: FastAPI REST API and WebSocket server
- Frontend: React web application
- FunASR Service: Optional standalone ASR service (profile-gated)
Key environment variables in .env:
# Database
POSTGRES_PASSWORD=your_secure_password
REDIS_PASSWORD=your_secure_password
MINIO_ROOT_PASSWORD=your_secure_password
# Security
JWT_SECRET=your_long_random_string
# LLM Providers
OLLAMA_BASE_URL=http://localhost:11434
OPENAI_API_KEY=your_key_here # OptionalData is persisted under the repository data/ directory:
data/postgres: PostgreSQL databasedata/redis: Redis persistencedata/minio: MinIO object storagedata/milvus: Milvus vector databasedata/etcd: etcd metadata
# Start all services
./infrastructure/scripts/start.sh all
# Start infrastructure only
./infrastructure/scripts/start.sh infrastructure
# Start application services only
./infrastructure/scripts/start.sh services
# Build images
./infrastructure/scripts/start.sh build# Stop all services
docker compose down
# Stop and remove volumes (WARNING: deletes all data)
docker compose down -v# All services
docker compose logs -f
# Specific service
docker compose logs -f api-gateway
# Last 100 lines
docker compose logs --tail=100 api-gatewaydocker compose restart api-gatewayAll services include health checks. Check service health:
# Check all services
docker compose ps
# Check specific service
docker compose ps api-gateway
# View health check logs
docker inspect dwp-api-gateway | grep -A 10 Healthchmod +x infrastructure/scripts/backup.sh
./infrastructure/scripts/backup.shBackups are stored in ./backups/ directory.
# Stop services
docker compose down
# Extract backup
cd backups
tar -xzf dwp_backup_YYYYMMDD_HHMMSS.tar.gz
# Restore PostgreSQL
docker compose up -d postgres
cat dwp_backup_YYYYMMDD_HHMMSS/postgres.sql | docker compose exec -T postgres psql -U dwp_user
# Restore Redis
docker cp dwp_backup_YYYYMMDD_HHMMSS/redis.rdb dwp-redis:/data/dump.rdb
docker compose restart redis
# Restore MinIO
docker run --rm \
--network dwp_dwp-data \
-v $(pwd)/dwp_backup_YYYYMMDD_HHMMSS/minio:/backup \
-e MC_HOST_minio=http://minioadmin:password@minio:9000 \
minio/mc \
mirror /backup minio
# Restore Milvus
docker cp dwp_backup_YYYYMMDD_HHMMSS/milvus dwp-milvus:/var/lib/
# Start all services
docker compose up -d-
Check logs:
docker compose logs service-name
-
Check health:
docker compose ps
-
Restart service:
docker compose restart service-name
-
Verify PostgreSQL is running:
docker compose exec postgres pg_isready -U dwp_user -
Check connection from API:
docker compose exec api-gateway python -c "from database.connection import get_db_session; print('OK')"
-
Check resource usage:
docker stats
-
Increase Docker memory limit in Docker Desktop settings
-
Reduce service resource limits in docker-compose.yml
If ports are already in use, update in .env:
API_PORT=8001
FRONTEND_PORT=3001
POSTGRES_PORT=5433Edit docker-compose.yml to add:
postgres:
command:
- "postgres"
- "-c"
- "max_connections=200"
- "-c"
- "shared_buffers=256MB"Adjust memory limit:
redis:
command: >
redis-server
--maxmemory 1gb
--maxmemory-policy allkeys-lruFor better performance, use SSD for Milvus data volume.
- Change default passwords in
.env - Use strong JWT secret (at least 32 characters)
- Enable TLS for production (see Kubernetes deployment guide)
- Restrict network access using Docker networks
- Regular backups using the backup script
- Update images regularly for security patches
- Milvus metrics: http://localhost:9091/metrics
- API metrics: http://localhost:8000/metrics
# Real-time stats
docker stats
# Disk usage
docker system df-
Backup data:
./infrastructure/scripts/backup.sh
-
Pull latest images:
docker compose pull
-
Rebuild custom images:
docker compose build
-
Restart services:
docker compose down docker compose up -d
-
Run migrations:
docker compose exec api-gateway alembic upgrade head
- For production deployment, see Kubernetes Deployment Guide
- For monitoring setup, see Monitoring Guide
- For security hardening, see Security Guide