banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

RQAlpha Dockerコンテナ化Dockerfile

最近、国内の量的分析作業に RQAlpha を使用する必要があり、RQAlpha を Docker コンテナ化して、Docker と ks を使用してコンテナを管理しやすくしました。

  1. jupyter/minimal-notebook の公式イメージをベースにしています。デフォルトでは python3 を使用しています。
  2. 環境管理には Anaconda の mini-conda を使用しており、python27 と python3 の実行環境を自由に切り替えることができます。
  3. conda で管理されていないパッケージを pip でインストールしました。

pip install bs4 cx-Oracle docopt future hdfs pyecharts PyMySQL raven typing lxml

  1. TA-lib をコンパイルしてインストールしました。現時点では 32bit バージョンです。また、国内で人気のある tushare もインストールしました。

pip install tushare TA-lib

  1. matplotlib.pyplot を自動的にインポートし、国内で人気のある pyechart と連携しています。
  2. HDFS、cx-Oracle、PyMySQL など、よく使用されるデータ接続パッケージもインストールしました。

以下の場所で入手できます: https://github.com/limccn/rqalpha/tree/master/docker

完全な Dockerfile の内容

# Copyright (c) Jupyter Development Team.

Modified BSD License の条件の下で配布されています。#

FROM jupyter/minimal-notebook

LABEL maintainer="Jupyter Project "

USER root

matplotlib のアニメーションのために libav-tools をインストール#

RUN apt-get update && \
apt-get install -y --no-install-recommends libav-tools && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

TA-lib のインストール#

RUN wget https://jaist.dl.sourceforge.net/project/ta-lib/ta-lib/0.4.0/ta-lib-0.4.0-src.tar.gz && \
tar xf ta-lib-0.4.0-src.tar.gz && rm ta-lib-0.4.0-src.tar.gz && \
cd ta-lib && \
./configure --prefix=/usr &&\
make && make install && \
rm -rf /home/$NB_USER/ta-lib

USER $NB_UID

Python 3 のパッケージのインストール#

matplotlib のために pyqt と qt を削除します。これらのイメージでは、ノートブックに適したバックエンドのみを使用する予定です。#

RUN conda install --quiet --yes \
'nomkl' \
'ipywidgets=7.1*' \
'pandas=0.19*' \
'numexpr=2.6*' \
'matplotlib=2.0*' \
'scipy=0.19*' \
'seaborn=0.7*' \
'scikit-learn=0.18*' \
'scikit-image=0.12*' \
'sympy=1.0*' \
'cython=0.25*' \
'patsy=0.4*' \
'statsmodels=0.8*' \
'cloudpickle=0.2*' \
'dill=0.2*' \
'numba=0.31*' \
'bokeh=0.12*' \
'sqlalchemy=1.1*' \
'hdf5=1.8.17' \
'h5py=2.6*' \
'vincent=0.4.*' \
'beautifulsoup4=4.5.*' \
'protobuf=3.*' \
'bcolz' \
'xlrd' && \
conda remove --quiet --yes --force qt pyqt && \
conda clean -tipsy && \
# RQAlpha のインストール
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rqalpha && \
rm -rf /home/$NB_USER/.rqalpha/bundle/ && \
rqalpha update_bundle && \
# RQAlpha のライブラリのインストール
pip install bs4 cx-Oracle docopt future hdfs pyecharts PyMySQL raven typing lxml && \
pip install tushare TA-lib && \
rm -rf /home/$NB_USER/.cache/pip/ && \
# ノートブックサーバーを実行する環境で ipywidgets 拡張機能を有効にする
jupyter nbextension enable --py widgetsnbextension --sys-prefix && \
# JupyterLab でも ipywidgets 拡張機能を有効にする
jupyter labextension install @jupyter-widgets/jupyterlab-manager@^0.33.1 && \
npm cache clean && \
rm -rf $CONDA_DIR/share/jupyter/lab/staging && \
rm -rf /home/$NB_USER/.cache/yarn && \
rm -rf /home/$NB_USER/.node-gyp && \
fix-permissions $CONDA_DIR && \
fix-permissions /home/$NB_USER

現時点では pip や conda パッケージがない facets をインストール#

RUN cd /tmp && \
git clone https://github.com/PAIR-code/facets.git && \
cd facets && \
jupyter nbextension install facets-dist/ --sys-prefix && \
rm -rf facets && \
fix-permissions $CONDA_DIR && \
fix-permissions /home/$NB_USER

フォントキャッシュをビルドするために最初に matplotlib をインポートします。#

ENV XDG_CACHE_HOME /home/$NB_USER/.cache/
RUN MPLBACKEND=Agg python -c "import matplotlib.pyplot" && \
fix-permissions /home/$NB_USER

USER $NB_UID

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。