Files
quantconnect--lean/DockerfileLeanFoundation
T
Martin-Molinero b7a21ce4be Update to net6 (#6311)
* Update to net6

* Bump pythonNet to 2.0.13
2022-05-03 11:45:55 -03:00

272 lines
11 KiB
Plaintext

#
# 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 <contact@quantconnect.com>
# 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.6m.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} && \
ln -s /opt/miniconda3/lib/libpython3.6m.so /usr/lib/libpython3.6m.so && \
conda install -y conda=4.10.3 && \
pip install --upgrade --no-cache-dir pip==21.2.2 && \
conda install -y python=3.6.8 && conda install -y pip=21.2.2 && conda clean -y --all
# Avoid pip install read timeouts
ENV PIP_DEFAULT_TIMEOUT=120
# 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 \
&& conda install -y -c conda-forge fbprophet=0.6 \
&& conda clean -y --all
# 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==3.2.6 \
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 \
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.1.15 \
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.5 \
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.69 \
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 \
sdeint==0.2.1 \
pandas_market_calendars==1.7 \
dgl==0.6.1 \
ruptures==1.1.3 \
simpy==4.0.1 \
scikit-learn-extra==0.2.0 \
ray==1.9.1
# feature_selector has overly strict dependency version ranges
# We already installed close-enough versions of all of its dependencies above
# All features in the usage notebook in https://github.com/Jie-Yuan/FeatureSelector work
RUN pip install --no-cache-dir --no-dependencies feature_selector==1.0.0
# 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/ && rm mlfinlab.zip
RUN conda install -y -c conda-forge \
openmpi=4.0.3 \
&& conda clean -y --all
# Install non-math packages
RUN conda install -y \
blaze=0.11.3 \
tensorflow-base=1.15.0 \
&& conda clean -y --all
# Install math/ML from pytorch
RUN conda install -y -c pytorch \
pytorch=1.5.0 \
torchvision=0.6.0 \
&& 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.5 torch-sparse==0.6.7 torch-cluster==1.5.7 torch-spline-conv==1.2.0 torch-geometric==1.7.0
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
# Update ODO
RUN conda remove --force-remove -y odo && conda clean -y --all
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 && rm odo-master-9fce669.zip
# 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 && rm dx-master-4c47c25.zip
# 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 && rm auto_ks-master-b39e8f3.zip
# 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 && rm pyrb-master-d02b56a.zip
# 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 && rm ssm-9fd66aed.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
# 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 && rm py-earth-0.1.0.zip
# 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 && rm fastText-0.9.2.zip
# 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 && rm tigramite-4.1.zip
# Install H2O: https://www.h2o.ai/download/
RUN wget https://cdn.quantconnect.com/h2o/h2o-3.34.0.7.zip && \
unzip -q h2o-3.34.0.7.zip && \
pip install h2o-3.34.0.7-py2.py3-none-any.whl && \
rm h2o-3.34.0.7.zip h2o-3.34.0.7-py2.py3-none-any.whl
# Remove black-listed packages
RUN pip uninstall -y s3transfer
# List all packages
RUN conda list