# # LEAN Foundation Docker Container 20201214 # Cross platform deployment for multiple brokerages # Intended to be used in conjunction with Dockerfile. This is just the foundation common OS+Dependencies required. # # Use base system for cleaning up wayward processes FROM phusion/baseimage:0.9.22 MAINTAINER QuantConnect # Use baseimage-docker's init system. CMD ["/sbin/my_init"] # Have to add env TZ=UTC. See https://github.com/dotnet/coreclr/issues/602 RUN env TZ=UTC # Install OS Packages: # Misc tools for running Python.NET and IB inside a headless container. RUN add-apt-repository ppa:ubuntu-toolchain-r/test && apt-get update RUN add-apt-repository ppa:apt-fast/stable && apt-get update && apt-get -y install apt-fast RUN apt-fast install -y git bzip2 clang cmake curl unzip wget python3-pip python-opengl zlib1g-dev \ xvfb libxrender1 libxtst6 libxi6 libglib2.0-dev libopenmpi-dev libstdc++6 openmpi-bin \ r-base pandoc libcurl4-openssl-dev \ openjdk-8-jdk openjdk-8-jre # Install IB Gateway: Installs to ~/Jts RUN wget https://cdn.quantconnect.com/interactive/ibgateway-stable-standalone-linux-x64-v978.2c.sh && \ chmod 777 ibgateway-stable-standalone-linux-x64-v978.2c.sh && \ ./ibgateway-stable-standalone-linux-x64-v978.2c.sh -q && \ wget -O ~/Jts/jts.ini https://cdn.quantconnect.com/interactive/ibgateway-latest-standalone-linux-x64-v974.4g.jts.ini && \ rm ibgateway-stable-standalone-linux-x64-v978.2c.sh # Mono C# for LEAN: # From https://github.com/mono/docker/blob/master/ RUN apt-get update && rm -rf /var/lib/apt/lists/* RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF RUN echo "deb http://download.mono-project.com/repo/ubuntu stable-xenial/snapshots/5.12.0.226 main" > /etc/apt/sources.list.d/mono-xamarin.list && \ apt-get update && apt-fast install -y binutils mono-complete ca-certificates-mono mono-vbnc nuget referenceassemblies-pcl && \ apt-fast install -y fsharp && rm -rf /var/lib/apt/lists/* /tmp/* # Install miniconda ENV CONDA="Miniconda3-4.5.12-Linux-x86_64.sh" ENV PATH="/opt/miniconda3/bin:${PATH}" RUN wget https://cdn.quantconnect.com/miniconda/${CONDA} && \ bash ${CONDA} -b -p /opt/miniconda3 && rm -rf ${CONDA} && \ ln -s /opt/miniconda3/lib/libpython3.6m.so /usr/lib/libpython3.6m.so # Install supported third party python packages # Updates conda and pip RUN conda update -y conda pip # Updates pip RUN pip install --upgrade --no-cache-dir pip # Sets python version to 3.6.8 RUN conda install -y python=3.6.8 RUN conda clean -y --all # Conda install required so that the packages are not # overwritten and have their version invalidated by # subsequent calls to conda install RUN conda install -y \ cython=0.29.17 \ pandas=0.25.3 \ numpy=1.18.1 # Install all packages RUN pip install --no-cache-dir \ wrapt==1.12.1 \ astropy==4.0.1.post1 \ beautifulsoup4==4.9.0 \ dill==0.3.1.1 \ jsonschema==3.2.0 \ lxml==4.5.0 \ msgpack==1.0.0 \ numba==0.46 \ setuptools-git==1.2 \ xarray==0.15.1 \ plotly==4.7.1 \ jupyterlab==2.1.2 \ tensorflow==1.15.2 \ docutils==0.14 \ cvxopt==1.2.0 \ gensim==3.8.0 \ Keras==2.3.1 \ lightgbm==2.3.0 \ mpi4py==3.0.3 \ nltk==3.4.5 \ pomegranate==0.11.1 \ graphviz==0.8.4 \ cmdstanpy==0.4 \ copulae==0.3.1 \ featuretools==0.14.0 \ fbprophet==0.6 \ PuLP==1.6.8 \ pymc3==3.8 \ rauth==0.7.3 \ scikit-learn==0.23.2 \ scikit-multiflow==0.4.1 \ scikit-optimize==0.7.4 \ Theano==1.0.4 \ tsfresh==0.15.1 \ tslearn==0.3.1 \ tweepy==3.8.0 \ PyWavelets==1.1.1 \ umap-learn==0.4.3 \ nvidia-ml-py3==7.352.0 \ fastai==1.0.61 \ arch==4.14 \ copulalib==1.1.0 \ copulas==0.3.3 \ creme==0.5.1 \ cufflinks==0.17.3 \ gym==0.17.2 \ ipywidgets==7.5.1 \ deap==1.3.1 \ cvxpy==1.0.31 \ pykalman==0.9.5 \ pyportfolioopt==1.2.2 \ pyramid-arima==0.9.0 \ pyro-ppl==1.3.1 \ riskparityportfolio==0.2 \ sklearn-json==0.1.0 \ stable-baselines==2.10.0 \ statistics==1.0.3.5 \ statsmodels==0.11.1 \ tensorforce==0.5.4 \ QuantLib-Python==1.18 \ xgboost==1.1.0 \ dtw-python==1.0.5 \ cntk==2.7 \ mxnet==1.6 \ gluonts==0.4.3 \ gplearn==0.4.1 \ jax==0.1.68 \ jaxlib==0.1.47 \ keras-rl==0.4.2 \ pennylane==0.9.0 \ neural-tangents==0.2.1 \ mplfinance==0.12.4a0 \ hmmlearn==0.2.3 \ catboost==0.23.2 \ fastai2==0.0.17 \ ppscore==0.0.2 \ scikit-tda==0.0.3 \ ta==0.5.25 \ seaborn==0.11.0 \ pyflux==0.4.15 \ optuna==2.3.0 \ findiff==0.8.5 \ sktime==0.3.0 \ sktime-dl==0.1.0 \ hyperopt==0.2.5 \ bayesian-optimization==1.2.0 \ rpy2==3.3.6 \ pingouin==0.3.8 \ quantecon==0.4.8 \ matplotlib==3.2.1 # Notes about pip install: # sktime==0.3.1 is max version we can use without causing backwards incompatible changes to pandas (>= 1.0.0) # PyS3DE==1.0.5 not installable RUN wget -O mlfinlab.zip https://cdn.quantconnect.com/mlfinlab/mlfinlab-0.9.3.zip && \ unzip -q mlfinlab.zip && \ mkdir -p /opt/miniconda3/lib/python3.6/site-packages/ && \ mv mlfinlab /opt/miniconda3/lib/python3.6/site-packages/ RUN conda install -y -c conda-forge \ openmpi=4.0.3 # Install non-math packages RUN conda install -y \ blaze=0.11.3 \ tensorflow-base=1.15.0 # Install math/ML from pytorch RUN conda install -y -c pytorch \ pytorch=1.5.0 \ torchvision=0.6.0 RUN conda clean -y --all RUN python -m nltk.downloader -d /usr/share/nltk_data punkt RUN python -m nltk.downloader -d /usr/share/nltk_data vader_lexicon RUN python -m nltk.downloader -d /usr/share/nltk_data stopwords # Update ODO RUN conda remove --force-remove -y odo RUN wget https://cdn.quantconnect.com/odo/odo-master-9fce669.zip && \ unzip -q odo-master-9fce669.zip && cd odo-master && \ pip install . && cd .. && rm -rf odo-master # Install DX Analytics RUN wget https://cdn.quantconnect.com/dx/dx-master-4c47c25.zip && \ unzip -q dx-master-4c47c25.zip && cd dx-master && \ pip install . && cd .. && rm -rf dx-master # Install Auto-KS RUN wget https://cdn.quantconnect.com/auto_ks/auto_ks-master-b39e8f3.zip && \ unzip -q auto_ks-master-b39e8f3.zip && cd auto_ks-master && \ pip install . && cd .. && rm -rf auto_ks-master # Install Pyrb RUN wget https://cdn.quantconnect.com/pyrb/pyrb-master-d02b56a.zip && \ unzip -q pyrb-master-d02b56a.zip && cd pyrb-master && \ pip install . && cd .. && rm -rf pyrb-master # Install SSM RUN wget https://cdn.quantconnect.com/ssm/ssm-9fd66aed.zip && \ unzip -q ssm-9fd66aed.zip && cd ssm && \ pip install . && cd .. && rm -rf ssm # Install TA-lib for python RUN wget https://cdn.quantconnect.com/ta-lib/ta-lib-0.4.0-src.tar.gz && \ tar -zxvf ta-lib-0.4.0-src.tar.gz && cd ta-lib && \ ./configure --prefix=/usr && make && make install && \ wget https://cdn.quantconnect.com/ta-lib/TA_Lib-0.4.18.zip && \ unzip -q TA_Lib-0.4.18.zip && cd ta-lib-TA_Lib-0.4.18 && \ python setup.py install && cd ../.. && rm -rf ta-lib # Install py-earth RUN wget https://cdn.quantconnect.com/py-earth/py-earth-0.1.0.zip && \ unzip -q py-earth-0.1.0.zip && cd py-earth-0.1.0 && \ python setup.py install && cd .. && rm -rf py-earth-0.1.0 # Install fastText RUN wget https://cdn.quantconnect.com/fastText/fastText-0.9.2.zip && \ unzip -q fastText-0.9.2.zip && cd fastText-0.9.2 && \ pip install . && cd .. && rm -rf fastText-0.9.2 # Install Tigramite RUN wget https://cdn.quantconnect.com/tigramite/tigramite-4.1.zip && \ unzip -q tigramite-4.1.zip && cd tigramite-4.1 && \ python setup.py install && cd .. && rm -rf tigramite-4.1 # Install H2O: https://www.h2o.ai/download/ RUN wget https://cdn.quantconnect.com/h2o/h2o-3.30.0.3.zip && \ unzip -q h2o-3.30.0.3.zip && \ pip install h2o-3.30.0.3/python/h2o-3.30.0.3-py2.py3-none-any.whl && \ rm -rf h2o-3.30.0.3 # Delete temporary zip files RUN rm -rf *.zip *.gz # Remove black-listed packages RUN pip uninstall -y s3transfer RUN conda clean -y --all # Clean up any unused packages installed by apt-get RUN apt-get autoremove --purge -y # List all packages RUN conda list