vnpy/docker/Dockerfile

119 lines
5.6 KiB
Docker
Raw Normal View History

FROM hub.c.163.com/public/ubuntu:16.04-tools
2017-04-26 13:26:46 +00:00
# 初始化 /etc/machine-id
RUN systemd-machine-id-setup
# 使用传统的 bash 作为 shell 解释器
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
2017-04-26 13:26:46 +00:00
# 时区设置
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 中文支持
RUN locale-gen zh_CN.UTF-8 \
&& DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales \
&& locale-gen zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh
ENV LC_ALL zh_CN.UTF-8
# 在本地构建镜像时使用阿里云或163的 apt 源
RUN echo "开始配置 vnpy 环境" \
&& echo "更新 apt 源列表" \
2017-04-26 13:26:46 +00:00
&& echo "" > /etc/apt/sources.list \
&& echo "deb http://mirrors.163.com/ubuntu/ xenial main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb http://mirrors.163.com/ubuntu/ xenial-backports main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb http://mirrors.163.com/ubuntu/ xenial-proposed main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb http://mirrors.163.com/ubuntu/ xenial-security main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb http://mirrors.163.com/ubuntu/ xenial-updates main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ xenial main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ xenial-backports main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ xenial-security main multiverse restricted universe" >> /etc/apt/sources.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ xenial-updates main multiverse restricted universe" >> /etc/apt/sources.list \
2017-04-26 13:26:46 +00:00
&& apt-get clean \
&& apt-get update \
2017-04-26 13:26:46 +00:00
&& echo "从 apt 获取软件" \
&& apt-get install -y bzip2 wget libgl1-mesa-glx qt5-default ttf-wqy-microhei \
2017-04-27 08:02:43 +00:00
&& echo "安装编译环境" \
&& apt-get install -y build-essential libboost-all-dev python-dev cmake
RUN echo "安装 VNC 服务,使用固定密码 123456 登录" \
&& apt-get install -y x11vnc xvfb \
&& mkdir ~/.vnc \
&& x11vnc -storepasswd 123456 ~/.vnc/passwd \
&& apt-get clean
RUN echo "安装 anaconda" \
2017-04-26 13:26:46 +00:00
&& mkdir /tmp/conda/ \
&& cd /tmp/conda/ \
# && echo "下载 Miniconda by Python3" && wget -t 0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& echo "下载 Miniconda by Python2" && wget -t 0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda2-latest-Linux-x86_64.sh \
2017-04-26 13:26:46 +00:00
&& bash Miniconda*.sh -b -p /opt/conda \
&& rm Miniconda*.sh \
# && echo "下载 anaconda by Python2" && wget -t 0 https://repo.continuum.io/archive/Anaconda2-4.4.0-Linux-x86_64.sh \
# && bash Anaconda*.sh -b -p /opt/conda \
# && rm Anaconda*.sh \
2017-04-26 13:26:46 +00:00
&& echo "设置 conda 和 python 的环境路径" \
&& ln -s /opt/conda/bin/python /usr/local/bin/python \
&& ln -s /opt/conda/bin/conda /usr/local/bin/conda \
&& ln -s /opt/conda/bin/pip /usr/local/bin/pip
RUN echo "设置 conda 国内源, 从 conda 安装 python 库" \
2017-04-26 13:26:46 +00:00
&& conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ \
&& conda config --set show_channel_urls yes \
&& conda install -y pymongo pyzmq numpy msgpack-python qtpy pyqt \
&& conda install -c https://conda.anaconda.org/quantopian ta-lib \
&& conda clean -ay
RUN echo "从 pip 安装 python 库" \
2017-04-27 08:02:43 +00:00
&& mkdir ~/.pip \
&& echo "[global]" >> ~/.pip/pip.conf \
&& echo "index-url = http://pypi.douban.com/simple" >> ~/.pip/pip.conf \
2017-04-26 13:26:46 +00:00
&& echo "使用 pip 安装 python 库" \
&& pip --trusted-host pypi.douban.com install ta-lib websocket-client qdarkstyle psutil quantopian-tools \
&& pip --trusted-host pypi.douban.com install zipline
RUN echo "安装 fluxbox 桌面管理器" \
&& apt-get install -y fluxbox
RUN echo "安装 mongodb 服务" \
&& mkdir -p /data/db \
&& apt-get install -y mongodb \
&& systemctl enable mongodb.service \
&& sed -i 's/bind_ip = 127.0.0.1/\#bind_ip = 127.0.0.1/g' /etc/mongodb.conf
# 从本地编译安装 vnpy 以及相关接口库
COPY ./vnpy/ /usr/src/vnpy/
COPY ./setup.py /usr/src/
#RUN cd /usr/src && pwd && ls
RUN echo "编译安装 vnpy 以及相关接口库" \
&& cd /usr/src/vnpy/api/ctp && ./build.sh \
&& cp -af /usr/src/vnpy/api/ctp/build/lib/*.so /usr/src/vnpy/api/ctp \
&& cd /usr/src && python ./setup.py build install \
&& cp -af /usr/src/vnpy/trader/gateway/ctpGateway/CTP_connect.json /opt/conda/lib/python2.7/site-packages/vnpy-1.6.2b0-py2.7.egg/vnpy/trader/gateway/ctpGateway/CTP_connect.json \
&& cp -af /usr/src/vnpy/trader/app/dataRecorder/DR_setting.json /opt/conda/lib/python2.7/site-packages/vnpy-1.6.2b0-py2.7.egg/vnpy/trader/app/dataRecorder/DR_setting.json
# 在客户端登录时自动启动 GUI 程序 (might not be the best way to do it, but it does the trick)
#RUN bash -c 'echo "python /srv/vnpy/examples/VnTrader/run_simple.py" >> ~/.bashrc'
#RUN bash -c 'echo "/usr/bin/xterm" >> ~/.bashrc'
# 设置登录时开启本地 mongodb 服务并激活图形管理界面
RUN bash -c 'echo "service mongodb restart && fluxbox &" >> ~/.bashrc'
RUN echo "安装配置结束"
2017-04-26 13:26:46 +00:00
WORKDIR /srv/vnpy
2017-04-26 13:26:46 +00:00
# 暂时不设置入口点,否则不能使用 -it 交互模式
2017-06-09 10:25:43 +00:00
# ENTRYPOINT python /srv/vnpy/vn.trader/vtServer.py