# # 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:focal-1.0.0 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 \ && echo deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ >> /etc/apt/sources.list \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 \ && add-apt-repository ppa:apt-fast/stable && apt-get update && apt-get -y install apt-fast \ && apt-fast install -y git bzip2 curl unzip wget python3-pip python-opengl zlib1g-dev \ xvfb libxrender1 libxtst6 libxi6 libglib2.0-dev libopenmpi-dev libstdc++6 openmpi-bin \ pandoc libcurl4-openssl-dev libgtk2.0.0 r-base \ && apt-fast clean && apt-get remove -y apt-fast && apt-get clean && apt-get autoclean && apt-get autoremove --purge -y \ && rm -rf /var/lib/apt/lists/* # Install IB Gateway: Installs to /root/ibgateway RUN mkdir -p /root/ibgateway && \ wget https://cdn.quantconnect.com/interactive/ibgateway-latest-standalone-linux-x64.v10.12.2d.sh && \ chmod 777 ibgateway-latest-standalone-linux-x64.v10.12.2d.sh && \ ./ibgateway-latest-standalone-linux-x64.v10.12.2d.sh -q -dir /root/ibgateway && \ rm ibgateway-latest-standalone-linux-x64.v10.12.2d.sh # Install dotnet 6 sdk & runtime RUN wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \ dpkg -i packages-microsoft-prod.deb && \ apt-get update; \ apt-get install -y apt-transport-https && \ apt-get update && \ apt-get install -y dotnet-sdk-6.0 && \ rm packages-microsoft-prod.deb && \ apt-get clean && apt-get autoclean && apt-get autoremove --purge -y && rm -rf /var/lib/apt/lists/* # Set PythonDLL variable for PythonNet ENV PYTHONNET_PYDLL="/opt/miniconda3/lib/libpython3.8.so" # 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} && \ conda install -y conda=4.10.3 && \ pip install --upgrade --no-cache-dir pip==22.2.2 && \ conda install -y python=3.8.13 && conda install -y -c conda-forge pip=22.2.2 && conda clean -y --all # Avoid pip install read timeouts ENV PIP_DEFAULT_TIMEOUT=120 # Install all packages RUN pip install --no-cache-dir \ cython==0.29.30 \ pandas==1.4.3 \ scipy==1.8.1 \ numpy==1.22.4 \ wrapt==1.14.1 \ astropy==5.1 \ beautifulsoup4==4.11.1 \ dill==0.3.5.1 \ jsonschema==4.9.1 \ lxml==4.9.1 \ msgpack==1.0.4 \ numba==0.56.0 \ xarray==2022.6.0 \ plotly==5.9.0 \ jupyterlab==3.4.4 \ tensorflow==2.9.1 \ docutils==0.19 \ cvxopt==1.3.0 \ gensim==4.2.0 \ keras==2.9.0 \ lightgbm==3.3.2 \ mpi4py==3.1.3 \ nltk==3.7 \ graphviz==0.8.4 \ cmdstanpy==1.0.4 \ copulae==0.7.7 \ featuretools==0.18.1 \ PuLP==2.6.0 \ pymc==4.1.4 \ rauth==0.7.3 \ scikit-learn==1.0.2 \ scikit-multiflow==0.5.3 \ scikit-optimize==0.9.0 \ aesara==2.7.9 \ tsfresh==0.15.1 \ tslearn==0.5.2 \ tweepy==4.10.0 \ PyWavelets==1.3.0 \ umap-learn==0.5.3 \ fastai==2.7.7 \ arch==5.3.1 \ copulas==0.7.0 \ creme==0.6.1 \ cufflinks==0.17.3 \ gym==0.25.1 \ ipywidgets==8.0.0rc1 \ deap==1.3.3 \ cvxpy==1.2.1 \ pykalman==0.9.5 \ pyportfolioopt==1.5.1 \ pmdarima==1.8.5 \ pyro-ppl==1.8.1 \ riskparityportfolio==0.3 \ sklearn-json==0.1.0 \ statsmodels==0.13.2 \ QuantLib==1.27 \ xgboost==1.6.1 \ dtw-python==1.2.2 \ mxnet==1.9.1 \ gluonts==0.7.7 \ gplearn==0.4.2 \ jax==0.3.16 \ jaxlib==0.3.15 \ keras-rl==0.4.2 \ pennylane==0.25.1 \ neural-tangents==0.6.0 \ mplfinance==0.12.9b1 \ hmmlearn==0.2.7 \ catboost==1.0.6 \ fastai2==0.0.30 \ scikit-tda==1.0.0 \ ta==0.10.1 \ seaborn==0.11.2 \ optuna==2.10.1 \ findiff==0.9.2 \ sktime==0.13.1 \ hyperopt==0.2.7 \ bayesian-optimization==1.2.0 \ rpy2==3.5.3 \ pingouin==0.5.2 \ quantecon==0.5.3 \ matplotlib==3.5.3 \ sdeint==0.3.0 \ pandas_market_calendars==3.5 \ dgl==0.9.0 \ ruptures==1.1.7 \ simpy==4.0.1 \ scikit-learn-extra==0.2.0 \ ray==1.13 \ fastText==0.9.2 \ tigramite==5.0.0.1 \ h2o==3.36.1.4 \ prophet==1.1 \ Riskfolio-Lib==3.3.0 \ nbeats-keras==1.7.0 \ nbeats-pytorch==1.6.0 \ torch==1.12.1 \ torchvision==0.13.1 \ ax-platform==0.2.6 RUN conda install -y -c conda-forge \ openmpi=4.1.4 \ && conda clean -y --all # Install PyTorch Geometric RUN TORCH=$(python -c "import torch; print(torch.__version__)") && \ CUDA=$(python -c "import torch; print('cu' + torch.version.cuda.replace('.', ''))") && \ pip install --no-cache-dir -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html \ torch-scatter==2.0.9 torch-sparse==0.6.14 torch-cluster==1.6.0 torch-spline-conv==1.2.1 torch-geometric==2.0.4 RUN python -m nltk.downloader -d /usr/share/nltk_data punkt && \ python -m nltk.downloader -d /usr/share/nltk_data vader_lexicon && \ python -m nltk.downloader -d /usr/share/nltk_data stopwords # Install ppscore RUN wget https://cdn.quantconnect.com/ppscore/ppscore-master-ce93fa3.zip && \ unzip -q ppscore-master-ce93fa3.zip && cd ppscore-master && \ pip install . && cd .. && rm -rf ppscore-master && rm ppscore-master-ce93fa3.zip # Install DX Analytics RUN wget https://cdn.quantconnect.com/dx/dx-master-69922c0.zip && \ unzip -q dx-master-69922c0.zip && cd dx-master && \ pip install . && cd .. && rm -rf dx-master && rm dx-master-69922c0.zip # Install Pyrb RUN wget https://cdn.quantconnect.com/pyrb/pyrb-master-250054e.zip && \ unzip -q pyrb-master-250054e.zip && cd pyrb-master && \ pip install . && cd .. && rm -rf pyrb-master && rm pyrb-master-250054e.zip # Install SSM RUN wget https://cdn.quantconnect.com/ssm/ssm-master-646e188.zip && \ unzip -q ssm-master-646e188.zip && cd ssm-master && \ pip install . && cd .. && rm -rf ssm-master && rm ssm-master-646e188.zip # 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 && rm ta-lib-0.4.0-src.tar.gz # Due to conflicts install 'pomegranate' virtual environment package RUN python -m venv /Foundation-Pomegranate --system-site-packages && . /Foundation-Pomegranate/bin/activate \ && pip install --no-cache-dir \ pomegranate==0.14.8 \ && python -m ipykernel install --name=Foundation-Pomegranate \ && deactivate # Due to conflicts install 'tensorforce' virtual environment package with older tensorflow RUN python -m venv /Foundation-Tensorforce && . /Foundation-Tensorforce/bin/activate \ && pip install --no-cache-dir \ tensorflow==2.6.0 \ keras==2.6.0 \ tensorforce==0.6.5 \ gym==0.21 \ jupyterlab==3.4.4 \ stable-baselines3==1.6.0 \ && python -m ipykernel install --name=Foundation-Tensorforce \ && deactivate RUN echo "{\"argv\":[\"python\",\"-m\",\"ipykernel_launcher\",\"-f\",\"{connection_file}\"],\"display_name\":\"Foundation-Py-Default\",\"language\":\"python\",\"metadata\":{\"debugger\":true}}" > /opt/miniconda3/share/jupyter/kernels/python3/kernel.json # List all packages RUN conda list