本指南介绍如何使用 Docker 部署 ROMA-01 Trading Platform。
- Docker (>= 20.10)
- Docker Compose (>= 2.0)
- 至少 2GB 可用磁盘空间
- Aster Finance DEX 账户和私钥
- 至少一个 LLM API Key (DeepSeek/Qwen/Claude/GPT/Gemini/Grok)
支持的架构:
- ✅ AMD64 (x86_64) - Intel/AMD 处理器
- ✅ ARM64 (aarch64) - Apple Silicon (M1/M2/M3), ARM 服务器
在项目根目录创建 .env 文件:
cp backend/.env.example .env编辑 .env 文件,填入你的配置:
# Aster Finance DEX 配置
ASTER_USER=your_username
ASTER_SIGNER=0x1234...
ASTER_PRIVATE_KEY=0xabcd...
# LLM API Keys(至少配置一个)
DEEPSEEK_API_KEY=sk-...
QWEN_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
XAI_API_KEY=xai-...
GOOGLE_API_KEY=AIza...
OPENAI_API_KEY=sk-proj-...
# API 配置
API_HOST=0.0.0.0
API_PORT=8000
CORS_ORIGINS=http://localhost:3000启动完整服务(后端 + 前端):
docker-compose up -d仅启动后端:
docker-compose up -d backend检查服务状态:
docker-compose ps查看日志:
# 查看所有服务日志
docker-compose logs -f
# 仅查看后端日志
docker-compose logs -f backend
# 仅查看前端日志
docker-compose logs -f frontend访问服务:
- 前端界面: http://localhost:3000
- 后端 API: http://localhost:8000
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
进入后端容器:
docker-compose exec backend bash在容器内启动智能体:
# 启动 DeepSeek 智能体
python -m roma_trading.cli start deepseek-chat-v3.1
# 启动多个智能体
python -m roma_trading.cli start deepseek-chat-v3.1 qwen-max-latest退出容器(智能体会继续在后台运行):
exitdocker-compose downdocker-compose restartdocker-compose build --no-cache
docker-compose up -ddocker stats# 停止并删除容器、网络
docker-compose down
# 删除容器、网络和卷(注意:会删除所有数据!)
docker-compose down -v如果你只需要部署后端服务:
docker-compose up -d backend# 构建镜像
cd backend
docker build -t roma-01-backend .
# 运行容器
docker run -d \
--name roma-backend \
-p 8000:8000 \
-v $(pwd)/config:/app/config \
-v $(pwd)/logs:/app/logs \
--env-file ../.env \
roma-01-backend- 不要在代码库中提交
.env文件 - 使用 Docker Secrets 或环境变量管理敏感信息
- 定期更新 API Keys
- 启用 HTTPS/TLS
在 docker-compose.yml 中添加资源限制:
services:
backend:
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '1'
memory: 2G配置日志轮转:
services:
backend:
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10"确保重要数据持久化:
volumes:
- ./backend/logs:/app/logs
- ./backend/data:/app/data
- roma-db:/app/database使用 Nginx 作为反向代理:
server {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}本项目 Dockerfile 已针对多架构优化:
自动支持,无需额外配置!Dockerfile 已包含 ARM64 支持。
首次构建可能需要 10-15 分钟(编译 TA-Lib):
docker-compose build backend
# 请耐心等待编译完成...正常使用,构建时间约 5-8 分钟。
# 查看当前系统架构
docker version --format '{{.Server.Arch}}'
# 查看镜像架构
docker inspect roma-demo-backend | grep Architecture如果遇到 cannot guess build type 错误:
# 清理缓存并重新构建
docker-compose down
docker system prune -a
docker-compose build --no-cache backend# 查看详细日志
docker-compose logs backend
# 检查配置文件
docker-compose config- 检查端口是否被占用:
lsof -i :8000 - 检查防火墙设置
- 验证环境变量是否正确加载
- 检查 Aster DEX 配置是否正确
- 验证 API Keys 是否有效
- 查看后端日志中的错误信息
# 监控资源使用
docker stats
# 检查容器健康状态
docker inspect --format='{{json .State.Health}}' roma-backend | jq# 拉取最新代码
git pull
# 重新构建并启动
docker-compose build
docker-compose up -d
# 验证更新
docker-compose logs -f backend- Docker (>= 20.10)
- Docker Compose (>= 2.0)
- At least 2GB available disk space
- Aster Finance DEX account and private key
- At least one LLM API Key (DeepSeek/Qwen/Claude/GPT/Gemini/Grok)
Supported Architectures:
- ✅ AMD64 (x86_64) - Intel/AMD processors
- ✅ ARM64 (aarch64) - Apple Silicon (M1/M2/M3), ARM servers
Create .env file in project root:
cp backend/.env.example .envEdit .env file with your configuration:
# Aster Finance DEX Configuration
ASTER_USER=your_username
ASTER_SIGNER=0x1234...
ASTER_PRIVATE_KEY=0xabcd...
# LLM API Keys (configure at least one)
DEEPSEEK_API_KEY=sk-...
QWEN_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
XAI_API_KEY=xai-...
GOOGLE_API_KEY=AIza...
OPENAI_API_KEY=sk-proj-...
# API Configuration
API_HOST=0.0.0.0
API_PORT=8000
CORS_ORIGINS=http://localhost:3000Start all services (backend + frontend):
docker-compose up -dStart backend only:
docker-compose up -d backendCheck service status:
docker-compose psView logs:
# View all service logs
docker-compose logs -f
# View backend logs only
docker-compose logs -f backend
# View frontend logs only
docker-compose logs -f frontendAccess services:
- Frontend UI: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
- Health Check: http://localhost:8000/health
Enter backend container:
docker-compose exec backend bashStart agents inside container:
# Start DeepSeek agent
python -m roma_trading.cli start deepseek-chat-v3.1
# Start multiple agents
python -m roma_trading.cli start deepseek-chat-v3.1 qwen-max-latestExit container (agents will continue running in background):
exitdocker-compose downdocker-compose restartdocker-compose build --no-cache
docker-compose up -ddocker stats# Stop and remove containers, networks
docker-compose down
# Remove containers, networks and volumes (WARNING: deletes all data!)
docker-compose down -vIf you only need to deploy the backend service:
docker-compose up -d backend# Build image
cd backend
docker build -t roma-01-backend .
# Run container
docker run -d \
--name roma-backend \
-p 8000:8000 \
-v $(pwd)/config:/app/config \
-v $(pwd)/logs:/app/logs \
--env-file ../.env \
roma-01-backend- DO NOT commit
.envfiles to repository - Use Docker Secrets or environment variables for sensitive data
- Regularly rotate API Keys
- Enable HTTPS/TLS
Add resource limits in docker-compose.yml:
services:
backend:
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '1'
memory: 2GConfigure log rotation:
services:
backend:
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "10"Ensure important data is persisted:
volumes:
- ./backend/logs:/app/logs
- ./backend/data:/app/data
- roma-db:/app/databaseUse Nginx as reverse proxy:
server {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}This Dockerfile is optimized for multiple architectures:
Automatic support - no extra configuration needed! ARM64 support is built-in.
First build may take 10-15 minutes (compiling TA-Lib):
docker-compose build backend
# Please be patient during compilation...Standard usage, build time approximately 5-8 minutes.
# Check system architecture
docker version --format '{{.Server.Arch}}'
# Check image architecture
docker inspect roma-demo-backend | grep ArchitectureIf you encounter cannot guess build type error:
# Clean cache and rebuild
docker-compose down
docker system prune -a
docker-compose build --no-cache backend# View detailed logs
docker-compose logs backend
# Check configuration
docker-compose config- Check if port is already in use:
lsof -i :8000 - Check firewall settings
- Verify environment variables are loaded correctly
- Verify Aster DEX configuration is correct
- Check API Keys are valid
- Review backend logs for error messages
# Monitor resource usage
docker stats
# Check container health status
docker inspect --format='{{json .State.Health}}' roma-backend | jq# Pull latest code
git pull
# Rebuild and start
docker-compose build
docker-compose up -d
# Verify update
docker-compose logs -f backendVersion: 1.0
Last Updated: 2025-11-03