How to Set Up Docker Deployment with Redis and MongoDB for TradingAgents-CN
Deploy TradingAgents-CN using Docker Compose to run a complete trading system stack with FastAPI, Vue 3, MongoDB persistence, and Redis caching in under five minutes.
TradingAgents-CN is an open-source quantitative trading platform that uses a containerized, front-back-end separation architecture. This guide walks you through the complete Docker deployment with Redis and MongoDB for TradingAgents-CN, referencing the actual docker-compose.yml, Dockerfiles, and configuration files from the hsliuping/TradingAgents-CN repository.
Architecture Overview
The Docker setup orchestrates four core services on a dedicated bridge network named tradingagents-network:
- backend – FastAPI application built from
Dockerfile.backendand exposed on port8000. - frontend – Vue 3 static site served by Nginx (port
3000on host mapped to80in container). - mongodb – Persistent MongoDB 4.4 instance for all trading data storage.
- redis – Redis 7 Alpine instance for caching and task queues.
The backend mounts host directories ./logs, ./config, and ./data into /app for persistence, while MongoDB and Redis use named Docker volumes (mongodb_data, redis_data) to survive container restarts.
Prerequisites
Before deploying, ensure your environment meets these requirements:
- Docker Engine >= 20.10 and Docker Compose >= v2.0 installed.
- Git to clone the repository.
- At least 4GB RAM and 10GB disk space available for images and volumes.
Configuration Files Deep Dive
docker-compose.yml Structure
The docker-compose.yml file in the repository root defines service dependencies, health checks, and networking. Key features include:
- Health checks using
curlfor the backend,redis-cli pingfor Redis, and MongoDB's built-in ping command. - Service dependencies with
condition: service_healthyensure the backend waits for databases to be ready. - Environment variable injection via
env_file: .envfor all services.
Backend Dockerfile Specifics
Dockerfile.backend builds the tradingagents-backend:v1.0.0-preview image with several production considerations:
- Installs system dependencies including pandoc, wkhtmltopdf, and Chinese fonts for PDF report generation.
- Copies
requirements.txtand installs Python dependencies. - Sets
WORKDIR /appand exposes port8000. - Uses a non-root user for security in the final stage.
Frontend Dockerfile
Dockerfile.frontend creates the tradingagents-frontend:v1.0.0-preview image:
- Builds the Vue 3 + Vite application in a Node.js environment.
- Copies the built static files to an Nginx Alpine image.
- Exposes port
80inside the container, mapped to host port3000.
Environment Variables (.env.docker)
The repository provides .env.docker as a template. Critical variables include:
TRADINGAGENTS_MONGODB_URL– Connection string pointing tomongodbservice.TRADINGAGENTS_REDIS_URL– Connection string pointing toredisservice.DOCKER_CONTAINER=true– Flag indicating containerized execution.VITE_API_BASE_URL=http://localhost:8000– Frontend API endpoint configuration.
Step-by-Step Deployment Guide
Follow these steps to deploy the complete stack:
-
Clone the repository
git clone https://github.com/hsliuping/TradingAgents-CN.git cd TradingAgents-CN -
Prepare environment variables
cp .env.docker .env # Edit .env if you need to change default passwords or API keys -
Launch the core services
docker compose up -dThis command builds the backend and frontend images, pulls MongoDB and Redis, creates the
tradingagents-network, and starts all containers with health-check dependencies. -
Start optional management tools (optional)
docker compose --profile management up -dThis adds redis-commander on port
8081and mongo-express on port8082.
Verifying the Deployment
Confirm each component is healthy using these checks:
- Backend API:
curl http://localhost:8000/api/healthshould return{"status":"ok"}. - Frontend: Navigate to
http://localhost:3000to view the Vue 3 interface. - Redis:
docker exec -it tradingagents-cn-redis-1 redis-cli -a tradingagents123 pingreturnsPONG. - MongoDB:
docker exec -it tradingagents-cn-mongodb-1 mongosh -u admin -p tradingagents123 --eval "db.adminCommand('ping')"returns{ ok: 1 }.
Connecting to Redis and MongoDB
Use these connection patterns in your Python backend code:
Redis connection (using the official client):
import redis
redis_client = redis.from_url(
"redis://:tradingagents123@redis:6379/0",
decode_responses=True
)
MongoDB connection (using Motor for async support):
from motor.motor_asyncio import AsyncIOMotorClient
client = AsyncIOMotorClient(
"mongodb://admin:tradingagents123@mongodb:27017/tradingagents?authSource=admin"
)
db = client.tradingagents
Optional Management UIs
The docker-compose.yml includes a management profile for database administration interfaces:
- redis-commander: Web UI for Redis data inspection available at
http://localhost:8081. - mongo-express: Web-based MongoDB admin interface available at
http://localhost:8082.
Start these only when needed to reduce the attack surface in production environments.
Summary
- TradingAgents-CN uses a four-service Docker architecture: backend (FastAPI), frontend (Vue 3/Nginx), MongoDB, and Redis.
- The
docker-compose.ymlfile defines health checks, persistent volumes, and thetradingagents-networkbridge for service discovery. - Deployment requires only
git clone,cp .env.docker .env, anddocker compose up -dto run the full stack locally. - Connection URLs use service names (
mongodb,redis) as hostnames, with authentication enabled via the.envfile. - Optional management tools (redis-commander, mongo-express) are available under the
managementprofile.
Frequently Asked Questions
What versions of MongoDB and Redis does TradingAgents-CN require?
TradingAgents-CN specifies MongoDB 4.4 and Redis 7 Alpine in the docker-compose.yml file. These versions are tested for compatibility with the FastAPI backend and Motor async driver. You can modify the image tags in docker-compose.yml if you need different versions, but ensure the authentication and connection string formats remain compatible.
How do I persist data when restarting the Docker containers?
The docker-compose.yml declares named volumes mongodb_data and redis_data for the databases, ensuring data survives container restarts. The backend persists logs, configuration, and application data through bind mounts (./logs, ./config, ./data mapped to /app). To completely reset the environment, run docker compose down -v, which removes both containers and named volumes.
Can I deploy TradingAgents-CN without the frontend or management tools?
Yes. The docker-compose.yml separates services into profiles. Running docker compose up -d starts only the core services: backend, MongoDB, and Redis. The frontend starts only if explicitly included or if you run the default profile that includes it. The management tools (redis-commander and mongo-express) require the --profile management flag and are completely optional for production deployments.
Where are the Docker configuration files located in the repository?
All Docker-related files reside in the repository root. The main orchestration file is docker-compose.yml. Build instructions for the FastAPI backend are in Dockerfile.backend, while the Vue 3 frontend build is defined in Dockerfile.frontend. Environment variable templates are provided in .env.docker, which you should copy to .env before starting the stack. Database initialization scripts are located in scripts/mongo-init.js.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →