ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

QUANTAXIS Docker 部署完全指南:从零安装到 qa-service 一键拉起量化环境

QUANTAXIS Docker 部署完全指南:从零安装到 qa-service 一键拉起量化环境 金融科技后端数据分析【免费下载链接】QUANTAXISQUANTAXIS 支持任务调度 分布式部署的 股票/期货/期权 数据/回测/模拟/交易/可视化/多账户 纯本地量化解决方案项目地址https://gitcode.com/gh_mirrors/qu/QUANTAXIS点击查看免费下载QUANTAXIS 是一个纯本地的股票/期货/期权量化解决方案覆盖数据获取、回测、模拟、实盘交易、可视化与多账户管理。为了让用户跳过繁琐的环境配置项目在docker/目录下提供了一套完整的 Docker 化部署方案其核心是qa-service一个把 MongoDB 数据库、RabbitMQ 事件消息队列、Jupyter 工作台、Web 可视化界面、回测与实盘服务全部预装并自动拉起的一站式量化环境。本指南以 docker/readme.md 为主线结合仓库内真实的一键脚本、docker-compose 配置与镜像 Dockerfile带你完成 Docker 安装、qa-service 环境初始化、日常使用与数据备份还原并深入理解这套容器编排的底层原理。读完你即可在 Linux、Windows 或 macOS 上快速部署一套开箱即用的 QUANTAXIS 环境。1. 部署总览四步走原文档将整套部署流程提纲挈领地分为四个阶段这也是本指南的组织脉络安装 Docker在宿主机上装好 Docker 与 Docker Compose 运行环境配置 qa-service 环境创建两个数据卷volume并获取 docker-compose 编排文件拉起并开始使用执行docker-compose up通过网页与 Jupyter 直接开始回测、实盘与可视化Docker 进阶日志查看、服务状态管理、停止/删除、更新以及数据库备份还原。如果你只想用完成前两步后由脚本自动完成第三步即可完全不需要深入理解 Docker 概念进阶部分则留给需要长期运维或二次开发的同学。2. 安装 Docker2.1 Linux一键安装脚本仓库中提供了针对 Ubuntu 等 Linux 发行版的一键安装脚本 config/install_docker.sh其核心逻辑如下curl -sSL https://get.daocloud.io/docker | sh curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-uname -s-uname -m /usr/local/bin/docker-compose chmod x /usr/local/bin/docker-compose可以看到脚本做了两件事通过 DaoCloud 镜像源安装 Docker 引擎比直接访问 Docker 官方源在国内网络环境更稳定下载docker-compose 1.24.1到/usr/local/bin/并赋予执行权限——qa-service 的编排文件正是基于该版本的 compose 语法编写version: 2因此使用仓库提供的脚本可以保证版本兼容。原文档给出的使用方式是先将脚本下载到本地然后以 root 权限执行sudo bash install_docker.sh注意该脚本仅适用于 LinuxWindows/macOS 用户请勿使用。2.2 Windows / macOS安装 Docker DesktopWindows 与 macOS 下需要手动安装Docker Desktop图形化安装包官方渠道下载即可。原文档特别强调了一个关键注意事项安装 exe 时最后一步关于使用 Windows container的选项一定不要勾选QUANTAXIS 的容器全部是基于 Linux 镜像构建的如daocloud.io/quantaxis/qacommunity-rust-go:allin-20210218必须以Linux container模式运行。同时原文档也建议尽量避免在 Windows 10 以下的旧系统上部署以免遇到兼容性问题。安装完成后可以在终端验证 Docker 是否可用docker version docker-compose version3. 理解 qa-service一个预装好一切的量化环境qa-service 的本质是一个 Docker Compose 环境environment它替你预装并预拉起了 QUANTAXIS 使用所需的全部组件。原文档给出了非常明确的定位只想使用写回测、跑实盘、看可视化→ 拉起 qa-service 即可不需要学会 Docker想做二次开发魔改源码、与现有系统集成→ 不建议直接上 Docker先在本地调试部署完成再学习制作镜像以实现分发。在你第一次使用 qa-service 之前需要完成两项一次性预处理创建两个 Docker 数据卷volumeqamg存放数据库MongoDB的数据文件qacode存放你编写的代码策略/回测脚本。准备 docker-compose.yaml 编排文件这是描述整个环境配置的设置文件。你不需要读懂其中的每一行只需要把它下载到一个专属文件夹例如D:/qa/或~/quantaxis_docker/中备用。关于 volume可以把它理解为Docker 级别的可移动硬盘容器是易失的删除后数据随之消失而 volume 挂载在宿主机上数据可以跨容器生命周期持久保留。qamg与qacode两个 volume只需创建一次后续反复docker-compose up/down都不会丢失数据。4. Linux 下使用 qa-service4.1 第一次使用一键脚本Linux 用户原文档戏称默认精通百度搜索的男人可以直接使用仓库中的 docker/qaservice_docker.sh。该脚本的内容非常直观echo QUANTAXIS_DOCKER_SERVICE mkdir quantaxis_docker cd quantaxis_docker wget https://raw.githubusercontent.com/QUANTAXIS/QUANTAXIS/master/docker/qa-service/docker-compose.yaml docker volume create qamg docker volume create qacode docker-compose up -d它依次完成了创建专属目录quantaxis_docker→ 下载 docker/qa-service/docker-compose.yaml → 创建qamg、qacode两个数据卷 → 以-d后台守护模式拉起整套环境。下载脚本后执行sudo bash qaservice_docker.sh4.2 后续使用后续启动/停止服务时只需cd到存放 docker-compose.yaml 的目录即第一次脚本创建的quantaxis_dockerdocker-compose up -d5. Windows / macOS 下使用 qa-service第一次使用需要手动完成四步第 1 步创建两个数据卷docker volume create --nameqamg docker volume create --nameqacode第 2 步下载编排文件—— 获取 docker/qa-service/docker-compose.yaml保存到本地。第 3 步把它放到你心爱的专属文件夹中例如D:/qa/记住这个目录。第 4 步拉起服务cd D:/qa # 换成你的专属目录 docker-compose up首次执行docker-compose up会从镜像仓库拉取全部镜像耗时较长属正常现象中途不要中断等待各容器完成初始化。后续使用先更新镜像再启动cd D:/qa docker-compose pull # 更新 docker 镜像文件 docker-compose up6. 拉起后端口一览与三种使用姿势6.1 端口分配原文档给出了 qa-service 暴露的核心端口。结合 docker/qa-service/docker-compose.yaml 与 docker/qa-service/docker-compose3.yaml 两个编排文件完整的端口映射如下端口服务说明27017MongoDBQUANTAXIS 主数据库数据文件存于qamg卷8888Jupyter在线写策略、跑回测的交互式工作台8010quantaxis_webserverWeb 可视化服务8018 / 8019 / 8028 / 8029quantaxis_webserver 辅助端口Web 服务扩展端口81quantaxis_community社区版 Web 界面容器内 80 端口映射到宿主机 818787qa 容器开发端口社区镜像预留61208系统监控glances容器资源监控界面v3 编排中映射 61209/6120815672qa-eventmq 管理界面RabbitMQ 管理控制台默认账号admin/admin5672qa-eventmq AMQP消息队列业务端口4369qa-eventmq epmdErlang 分布式节点端口8011qamarketcollector实时行情采集服务v3 编排8020qatrader交易网关服务v3 编排6.2 三种使用姿势环境拉起后QUANTAXIS 已经帮你把配置环境的脏活全部干完你可以直接通过 HTML 界面工作浏览器访问社区版界面端口 81与 quantaxis_webserver端口 8010直接编写回测、查看回测结果、操作实盘通过 Jupyter 工作访问 8888 端口打开 Jupyter Lab在线编写与运行策略代码默认持久化到qacode卷/root/code本地 Python 远端环境如果你本地已有 Python 环境可以在本地编写代码通过网络连接 qa-service 提供的数据库27017与消息队列5672把 Docker 当作共享基础设施来用。原文档还特别提醒两个观念Docker 与本地环境可以并存有了本地 Python 并不妨碍使用 Docker两者互不冲突Docker 的目的是快速拉起如果你有精力把 QUANTAXIS 的各个模块全部本地部署一遍同样欢迎——Docker 只是省事的手段不是唯一路径。7. 进阶运维日志、状态、停止与更新以下内容属于 Docker 进阶操作看不懂、不想看可以跳过对长期使用来说却非常实用。7.1 查看每日数据更新日志docker-compose 中预留了qacron定时数据更新服务编排文件中以注释形式存在。查看其日志docker logs cron容器名注意日志只输出到容器前台如果日志对你很重要建议使用专业的日志收集工具从 cron 容器采集。7.2 查看服务状态docker ps # 查看运行中的容器列表 docker stats # 实时查看各容器 CPU/内存占用 docker-compose top # 查看 compose 各服务对应的进程 docker-compose ps # 查看 compose 各服务的运行状态7.3 停止 / 删除全部服务原文档戏称这两条真的超级管用不信你可以试下# 停止所有容器 docker stop $(docker ps -a -q) # 删除所有容器 docker rm $(docker ps -a -q)注意docker rm删除的是容器本身不会删除qamg、qacode数据卷因此你的数据库与代码不会丢失若想连数据卷一起清理需显式执行docker volume rm qamg qacode务必谨慎数据不可恢复。7.4 更新镜像docker-compose pull拉取最新镜像后再执行docker-compose up -d即可让新配置生效。8. 数据库备份与还原关键数据安全MongoDB 数据保存在qamg卷中下面两组命令分别完成备份与还原全程无需进入容器。8.1 备份输出到宿主机当前目录文件名dbbackup.tar第 1 步停止服务避免备份过程中数据被写入docker-compose stop第 2 步利用一个临时 Alpine 容器把qamg卷挂载为/data/db将宿主机当前目录挂载为/backup再打包docker run --rm -v qamg:/data/db \ -v $(pwd):/backup alpine \ tar zcvf /backup/dbbackup.tar /data/db第 3 步备份完成后重启服务docker-compose up -d8.2 还原宿主机当前目录下需存在dbbackup.tar第 1 步停止服务docker-compose stop第 2 步先清理旧数据目录diagnostic.data、journal、configdb再从备份包解压还原docker run --rm -v qamg:/data/db \ -v $(pwd):/backup alpine \ sh -c cd /data/db \ rm -rf diagnostic.data \ rm -rf journal \ rm -rf configdb \ cd / \ tar xvf /backup/dbbackup.tar第 3 步重新启动服务docker-compose up -d建议将备份文件dbbackup.tar定期转移到异地存储qamg卷只是本机数据卷宿主机磁盘故障时仍会丢失。9. 源码级深入qa-service 容器编排原理要理解 qa-service 为什么能一键拉起一切需要回到仓库中的编排文件与镜像构建脚本。9.1 docker-compose.yaml 结构解析docker/qa-service/docker-compose.yamlcompose v2 语法定义了 5 个服务它们在自定义网络qanetwork子网172.19.0.0/24网关172.19.0.1内通过固定 IP 互联服务镜像固定 IP职责qaquantaxis/qacommunity-rust-go:allin-20210218172.19.0.3社区版主容器Jupyter(8888) 社区界面(80→81)挂载qacode:/root/codeqaweb同上172.19.0.4Web 服务8010 等端口通过 wait_for_it 等待 MQ 就绪后启动 celery workermgdbquantaxis/qamongo_single:latest172.19.0.2MongoDB 单机实例初始化库quantaxis数据挂载qamg:/data/dbqaeventmqquantaxis/qaeventmq:latest172.19.0.5RabbitMQ 事件消息队列15672/5672/4369qatraderquantaxis/qatrader:latest172.19.0.9交易网关8020等待 MQ 就绪后启动qatraderserver关键设计点外部卷声明volumes段使用external: true 固定名称qamg/qacode这正是为什么必须先手动docker volume create的原因——Compose 不会自动创建外部卷缺失会导致启动失败启动顺序控制depends_on保证数据库与消息队列先于应用启动而command: [/root/wait_for_it.sh, qaeventmq:5672, --, ...]则使用 docker/qa-service/wait_for_it.sh 脚本轮询 TCP 端口确保 AMQP 真正就绪后才拉起业务进程wait_for_it.sh是标准 wait-for-it 实现支持-t超时、-s严格模式等参数默认超时 15 秒自愈能力全部服务配置restart: always进程异常退出或宿主机重启后容器自动恢复。9.2 环境变量容器间如何认出彼此docker/qa-service/env.envcompose v3 编排通过env_file引用集中定义了服务间的连接信息TZAsia/Shanghai # 时区 LANGC.UTF-8 # 语言编码 MONGO_INITDB_DATABASEquantaxis # MongoDB 初始数据库名 MONGODBmgdb # 数据库主机名对应 mgdb 服务 QARUNqaweb # 运行模式 QAPUBSUB_IPqaeventmq # 消息队列主机名 QAPUBSUB_PORT5672 # AMQP 端口 QAPUBSUB_USERadmin # 消息队列账号 QAPUBSUB_PWDadmin # 消息队列密码 QARUN_AMQPpyamqp://admin:adminqaeventmq:5672// # Celery 使用的 AMQP 连接串 EventMQ_IPqaeventmq # EventMQ 主机名QUANTAXIS 各模块正是通过MONGODB、QAPUBSUB_*这类环境变量在容器内定位彼此的——这也解释了为什么 docker 内无需修改任何配置文件即可互通。若你自定义部署拓扑例如把消息队列换到宿主机只需调整这些变量即可。9.3 镜像内部社区容器启动链路以 docker/kite/qa-community-rust2/Dockerfile 为例社区镜像基于 Jupyter 基础镜像构建内置了Python 量化全家桶quantaxis、quantaxis_webserver、quantaxis_run、qifimanager、qavifiserver、eventlet等经 pypi 镜像安装、Rust 工具链、Go 环境gophernotes Jupyter 内核、Rust Jupyter 内核evcxr、Keras/TensorFlow以及定期更新脚本daily_update内容为每周一至周五 18:18 由 cron 触发执行config/update_future.py更新期货数据。容器入口 run-community.sh 会先根据MONGODB环境变量把QASetting.py中的localhost替换为实际的数据库主机名再启动 Jupyter Lab 与社区界面 HTTP 服务sed -i s|localhost|$MONGODB| /opt/conda/lib/python3.8/site-packages/QUANTAXIS/QAUtil/QASetting.py jupyter lab --allow-root --notebook-dir/root --config /root/.jupyter/jupyter_notebook_config.py cd /root/qamazing_community python -m http.server 80Web 服务容器则通过 runcelery.sh 依次拉起quantaxis_webserver、qifi_manager、qavifiserver、portfoliohandler最后启动 Celery worker 处理回测/任务队列quantaxis_webserver qifi_manager qavifiserver /root/portfoliohandler celery -A quantaxis_run worker --loglevelinfo9.4 编排的两种版本仓库在docker/qa-service/下同时提供了两个编排文件docker/qa-service/docker-compose.yamlcompose v2 语法基础五服务对应 docker-compose 1.24.1 一键脚本安装的版本docker/qa-service/docker-compose3.yamlcompose v3.7 语法额外包含qamonitor系统监控61209/61208、qamarketcollector实时行情采集8011两个服务并通过env_file: env.env统一注入环境变量适合新版本 Docker Compose 与更完整的监控/采集场景。如果你使用新版 Docker Desktop内置较新 compose 版本可以优先选用 v3 编排文件并重命名为docker-compose.yaml以获得监控与实时采集能力。10. 小结与继续阅读一句话总结这套方案安装 Docker → 创建两个数据卷 → 拿到 docker-compose.yaml →docker-compose up然后浏览器打开 8888/8010/81 端口即可开始量化开发。数据库在qamg卷中持久化、代码在qacode卷中持久化备份还原也有现成命令整个环境可复制、可迁移、可自愈。相关源码与文档可继续深入阅读一键安装脚本config/install_docker.shLinux 一键部署脚本docker/qaservice_docker.sh基础编排文件docker/qa-service/docker-compose.yamlv3 编排文件与配置docker/qa-service/docker-compose3.yaml、docker/qa-service/env.env就绪等待脚本docker/qa-service/wait_for_it.sh镜像构建与启动脚本docker/kite/qa-community-rust2/Dockerfile、docker/kite/qa-community-rust2/run-community.sh、docker/kite/qa-community-rust2/runcelery.sh事件消息队列镜像docker/qa-eventmq/Dockerfile部署相关文档doc/deployment/docker.md、doc/deployment/overview.mdKubernetes 部署参考docker/k8s-deployment/50-quantaxis.yaml赞分享金融科技后端数据分析【免费下载链接】QUANTAXISQUANTAXIS 支持任务调度 分布式部署的 股票/期货/期权 数据/回测/模拟/交易/可视化/多账户 纯本地量化解决方案项目地址https://gitcode.com/gh_mirrors/qu/QUANTAXIS点击查看免费下载相关推荐OpenIM Server Docker 环境安装指南从 Docker 与 Docker Compose 安装到一键拉起 IM 依赖组件OpenIM Server Docker 环境安装指南从 Docker 与 Docker Compose 安装到一键拉起 IM 依赖组件 导读 本指南以 Op即时通讯后端微服务WebSocketHuly 开发环境 Docker Compose 部署全指南从 rush 构建到一键拉起整套微服务Huly 开发环境 Docker Compose 部署全指南从 rush 构建到一键拉起整套微服务 本文围绕 dev/readme.md https://li后端前端企业应用项目管理即时通讯CRM超详细Informer2020安装指南从环境配置到Docker一键部署超详细Informer2020安装指南从环境配置到Docker一键部署 1. 前言解决时间序列预测模型的环境配置痛点 你是否在部署Informer2020时人工智能深度学习机器学习上一篇deepseek-harness为 conversation.composer 链选举引入语义阶段解决只读 Composer 抢占挂起交互的排序缺陷下一篇Open WebUI 本地部署三步把界面跑起来创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表