Skip to content

容器运行时配置

fasiondog edited this page Nov 22, 2025 · 1 revision

容器运行时配置

**本文档中引用的文件** - [Dockerfile_dev](file://docker/Dockerfile_dev) - [Dockerfile_dev_debian](file://docker/Dockerfile_dev_debian) - [Dockerfile_dev_fedora](file://docker/Dockerfile_dev_fedora) - [Dockerfile_miniconda](file://docker/Dockerfile_miniconda) - [hikyuu_linux.ini](file://test_data/hikyuu_linux.ini) - [hku_config_template.py](file://hikyuu/data/hku_config_template.py) - [requirements.txt](file://requirements.txt)

目录

  1. 简介
  2. 镜像构建与选择
  3. 容器运行时配置
  4. 数据持久化与卷挂载
  5. 数据库连接配置
  6. 网络与端口映射
  7. 环境变量设置
  8. 资源限制
  9. 不同Dockerfile镜像的行为差异

简介

Hikyuu是一个基于C++/Python的开源量化交易研究框架,用于策略分析及回测。本指南详细说明如何正确启动Hikyuu的Docker容器,包括配置持久化、数据共享、端口映射、环境变量设置和资源限制等关键运行时配置。

Section sources

  • readme.md

镜像构建与选择

Hikyuu项目提供了多个Dockerfile用于构建不同的镜像,以满足不同用户的需求。这些Dockerfile位于docker/目录下,主要包括:

  • Dockerfile_dev: 基于Ubuntu 24.04的开发环境,包含完整的编译工具链和依赖
  • Dockerfile_dev_debian: 基于Debian trixie的开发环境
  • Dockerfile_dev_fedora: 基于Fedora最新版的开发环境
  • Dockerfile_miniconda: 基于Ubuntu 24.04的轻量级运行环境,仅包含Miniconda和Hikyuu包

用户可以根据自己的需求选择合适的Dockerfile进行镜像构建。对于生产环境,推荐使用Dockerfile_miniconda以获得更小的镜像体积和更快的启动速度。

Section sources

  • Dockerfile_dev
  • Dockerfile_dev_debian
  • Dockerfile_dev_fedora
  • Dockerfile_miniconda

容器运行时配置

基本运行命令

使用docker run命令启动Hikyuu容器的基本语法如下:

docker run -it --name hikyuu-container hikyuu-image

完整参数示例

以下是一个完整的docker run命令示例,包含了所有关键参数:

docker run -it \
  --name hikyuu-jupyter \
  -p 8888:8888 \
  -p 8080:8080 \
  -v /path/to/local/test_data:/app/test_data \
  -v /path/to/local/hikyuu/config:/app/hikyuu/config \
  -v /path/to/local/workspace:/workspace \
  -e PYTHONPATH=/app/hikyuu \
  -e TZ=Asia/Shanghai \
  --memory=4g \
  --cpus=2 \
  hikyuu:latest

Section sources

  • Dockerfile_dev
  • Dockerfile_miniconda

数据持久化与卷挂载

为了实现配置持久化和数据共享,需要正确设置卷挂载。Hikyuu的关键数据目录包括:

test_data目录

test_data/目录包含测试数据和配置文件,是最重要的持久化目录之一。挂载示例:

-v /path/to/local/test_data:/app/test_data

该目录包含:

  • block/: 板块配置文件
  • hikyuu_linux.ini: Linux环境配置文件
  • hikyuu_win.ini: Windows环境配置文件
  • logger.properties: 日志配置文件

config目录

hikyuu/config/目录包含框架的配置文件,特别是板块配置文件。挂载示例:

-v /path/to/local/hikyuu/config:/app/hikyuu/config

工作空间目录

建议挂载一个本地目录作为工作空间,用于保存用户创建的脚本、笔记和输出文件:

-v /path/to/local/workspace:/workspace

Section sources

  • test_data/hikyuu_linux.ini
  • hikyuu/config/block/dybk.ini

数据库连接配置

Hikyuu支持多种数据库后端,包括MySQL、SQLite和ClickHouse。在容器内访问这些数据库服务需要正确配置。

配置文件结构

Hikyuu的数据库配置主要在hikyuu_linux.inihikyuu_win.ini文件中定义,关键配置段包括:

  • [baseinfo]: 基础信息存储配置
  • [kdata]: K线数据存储配置
  • [block]: 板块信息存储配置

MySQL配置

要使用MySQL作为数据后端,需在配置文件中设置:

[baseinfo]
type = mysql
host = mysql-host
port = 3306
usr = username
pwd = password

[kdata]
type = mysql
host = mysql-host
port = 3306
usr = username
pwd = password

SQLite配置

SQLite是默认的轻量级数据库选项,配置简单:

[baseinfo]
type = sqlite3
db = ./test_data/stock.db

[kdata]
type = hdf5
sh_day = ./test_data/sh_day.h5
sz_day = ./test_data/sz_day.h5

ClickHouse配置

对于大规模数据处理,可以使用ClickHouse:

[baseinfo]
type = clickhouse
host = clickhouse-host
port = 9000
usr = username
pwd = password

[kdata]
type = clickhouse
host = clickhouse-host
port = 9000
usr = username
pwd = password

Section sources

  • test_data/hikyuu_linux.ini
  • hikyuu/data/hku_config_template.py

网络与端口映射

Hikyuu容器可能需要暴露多个端口以支持不同服务。

Jupyter服务

如果容器内运行Jupyter Notebook或JupyterLab,需要映射Jupyter的默认端口:

-p 8888:8888

GUI服务

如果使用Hikyuu的GUI服务,可能需要映射相应的端口:

-p 8080:8080

IPC通信

Hikyuu使用IPC(进程间通信)进行数据交换,配置文件中指定了IPC路径:

quotation_server = ipc:///tmp/hikyuu_real.ipc

在容器环境中,可能需要通过卷挂载共享IPC文件:

-v /tmp/hikyuu_ipc:/tmp

Section sources

  • test_data/hikyuu_linux.ini
  • hikyuu/data/hku_config_template.py

环境变量设置

正确设置环境变量对Hikyuu容器的正常运行至关重要。

PYTHONPATH

必须设置PYTHONPATH以确保Python能够找到Hikyuu模块:

-e PYTHONPATH=/app/hikyuu

时区设置

设置正确的时区对中国股市数据处理非常重要:

-e TZ=Asia/Shanghai

Miniconda环境

对于基于Miniconda的镜像,还需要确保conda环境正确激活:

-e CONDA_DEFAULT_ENV=base

Section sources

  • Dockerfile_dev
  • Dockerfile_miniconda

资源限制

为了合理分配系统资源,建议为容器设置资源限制。

内存限制

根据数据规模设置适当的内存限制:

--memory=4g

对于大规模数据处理,可能需要更多内存:

--memory=8g

CPU限制

限制容器使用的CPU核心数:

--cpus=2

临时目录

Hikyuu会使用临时目录存储缓存文件,建议挂载一个高性能的临时目录:

-v /tmp/hikyuu_tmp:/app/test_data/tmp

Section sources

  • Dockerfile_dev
  • test_data/hikyuu_linux.ini

不同Dockerfile镜像的行为差异

不同的Dockerfile构建的镜像在运行时有显著的行为差异,用户需要了解这些差异以正确使用。

Dockerfile_dev系列

基于Dockerfile_devDockerfile_dev_debianDockerfile_dev_fedora构建的镜像:

  • 包含完整的编译工具链(gcc, make等)
  • 包含xmake构建系统
  • 从源码克隆并安装Hikyuu
  • 体积较大,适合开发和调试
  • 启动时会自动激活conda base环境

Dockerfile_miniconda

基于Dockerfile_miniconda构建的镜像:

  • 仅包含Miniconda和Hikyuu包
  • 体积较小,适合生产环境
  • 使用多阶段构建,运行时环境精简
  • 需要额外安装某些Python包时,必须进入容器手动安装
  • 启动命令为bash -l,会加载.bashrc并激活conda环境

包安装差异

Miniconda镜像可能需要额外的包安装步骤:

# 进入运行中的容器
docker exec -it hikyuu-container bash

# 安装额外的Python包
conda install -y pandas numpy matplotlib
#
pip install pandas numpy matplotlib

Section sources

  • Dockerfile_dev
  • Dockerfile_dev_debian
  • Dockerfile_dev_fedora
  • Dockerfile_miniconda

Clone this wiki locally