Prerequisites
All you need is Docker and an AI API key:Docker Desktop
Install Docker Desktop for your platform
DashScope API Key
Get your Alibaba Cloud Bailian API key
Docker Compose is included with Docker Desktop. For Linux servers, you may need to install it separately.
Quick Start
Configure environment variables
Copy the example environment file and edit it with your API key:Edit
.env and add your API key:.env
Launch all services
Build and start all containers in detached mode:This single command will:
- Build the Spring Boot backend (Java 21)
- Build the React frontend with Nginx
- Start PostgreSQL 16 with pgvector extension
- Start Redis 7 for caching and message queues
- Start MinIO for S3-compatible object storage
- Initialize the MinIO bucket automatically
- Configure all services to work together
First-time build may take 5-10 minutes depending on your internet connection and machine specs. Subsequent starts will be much faster.
Service URLs and Credentials
Once deployed, access the services at these URLs:| Service | URL | Default Username | Default Password | Description |
|---|---|---|---|---|
| Frontend | http://localhost | - | - | Main application interface |
| Backend API | http://localhost:8080 | - | - | REST API endpoints |
| MinIO Console | http://localhost:9001 | minioadmin | minioadmin | Object storage management |
| MinIO API | http://localhost:9000 | - | - | S3-compatible API |
| PostgreSQL | localhost:5432 | postgres | password | Database (includes pgvector) |
| Redis | localhost:6379 | - | - | Cache and message queue |
Docker Compose Architecture
Here’s how the services are structured:docker-compose.yml
The configuration uses health checks and dependency ordering to ensure services start in the correct sequence. The backend won’t start until PostgreSQL, Redis, and MinIO are healthy and the bucket is created.
Environment Variables Reference
You can customize the deployment by setting these environment variables in your.env file:
Required Configuration
| Variable | Description | Example |
|---|---|---|
AI_BAILIAN_API_KEY | Alibaba Cloud DashScope API key | sk-xxxxxxxxxxxxx |
Optional AI Configuration
| Variable | Default | Description |
|---|---|---|
AI_MODEL | qwen-plus | AI model to use (qwen-plus, qwen-max, qwen-long) |
APP_AI_STRUCTURED_MAX_ATTEMPTS | 2 | Retries for structured output parsing |
APP_AI_STRUCTURED_INCLUDE_LAST_ERROR | true | Include last error in retry prompt |
Optional Interview Configuration
| Variable | Default | Description |
|---|---|---|
APP_INTERVIEW_FOLLOW_UP_COUNT | 1 | Number of follow-up questions per main question |
APP_INTERVIEW_EVALUATION_BATCH_SIZE | 8 | Batch size for evaluating interview answers |
Optional RAG Configuration
| Variable | Default | Description |
|---|---|---|
APP_AI_RAG_REWRITE_ENABLED | true | Enable query rewriting for better search |
APP_AI_RAG_TOPK_SHORT | 20 | Top-K results for short queries (≤4 chars) |
APP_AI_RAG_TOPK_MEDIUM | 12 | Top-K results for medium queries |
APP_AI_RAG_TOPK_LONG | 8 | Top-K results for long queries |
APP_AI_RAG_MIN_SCORE_SHORT | 0.18 | Minimum similarity score for short queries |
APP_AI_RAG_MIN_SCORE_DEFAULT | 0.28 | Minimum similarity score for other queries |
Common Operations
View Service Status
Check the status of all services:View Logs
Restart a Service
Stop All Services
Rebuild After Code Changes
If you’ve modified the source code:Access Container Shell
Clean Up Docker Resources
Data Persistence
All data is stored in Docker named volumes, which persist even when containers are stopped or removed:- postgres_data: Database tables, user data, and vector embeddings
- redis_data: Cached sessions and Stream message queues
- minio_data: Uploaded resumes, knowledge base documents, and PDF exports
Scaling and Performance
Increase Backend Resources
Editdocker-compose.yml to add resource limits:
Enable Virtual Threads (Java 21)
The backend already uses Java 21 virtual threads for improved I/O performance, configured inapplication.yml:
app/src/main/resources/application.yml
Troubleshooting
Port Already in Use
If ports 80, 8080, 5432, 6379, 9000, or 9001 are already in use:docker-compose.yml
Backend Service Fails to Start
-
Check API key is set:
-
View detailed logs:
-
Verify database connection:
Resume Analysis Stuck in “Processing”
-
Check Redis Stream consumers are running:
-
Verify AI API key is valid by checking logs:
Database Connection Refused
Ensure PostgreSQL is healthy before the backend starts:Production Considerations
- Change all default passwords in a separate
.env.productionfile - Use external managed databases (e.g., AWS RDS, Azure Database for PostgreSQL)
- Set up SSL/TLS with a reverse proxy like Nginx or Traefik
- Configure backup strategies for volumes
- Set resource limits for all services
- Enable monitoring with Prometheus and Grafana
- Use secrets management instead of plain text environment variables
- Review CORS configuration in
application.ymlfor your domain:
application.yml
Next Steps
Resume Analysis
Start analyzing resumes with AI-powered insights
Mock Interview
Set up personalized mock interview sessions
Configuration Guide
Fine-tune your deployment settings
Production Deployment
Learn best practices for production hosting
