Files
quantconnect--lean/DockerfileLeanFoundationARM
T
Martin-Molinero 5359561b9d Dotnet 9 (#8459)
* Dotnet 9

* Remove C# kernel
2024-12-19 14:01:26 -03:00

279 lines
11 KiB
Plaintext

# This is a version of DockerfileLeanFoundation for ARM
# Some packages from the AMD image are excluded because they are not available on ARM or take too long to build
# Use base system for cleaning up wayward processes
FROM phusion/baseimage:jammy-1.0.1
MAINTAINER QuantConnect <contact@quantconnect.com>
# Use baseimage-docker's init system.
CMD ["/sbin/my_init"]
# 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 \
&& apt-get install -y git libgtk2.0.0 bzip2 curl unzip wget python3-pip python3-opengl zlib1g-dev \
xvfb libxrender1 libxtst6 libxi6 libglib2.0-dev libopenmpi-dev libstdc++6 openmpi-bin \
r-base pandoc libcurl4-openssl-dev \
openjdk-11-jdk openjdk-11-jre bbe \
&& apt-get clean && apt-get autoclean && apt-get autoremove --purge -y \
&& rm -rf /var/lib/apt/lists/*
# Install dotnet 9 sdk & runtime
# The .deb packages don't support ARM, the install script does
ENV PATH="/root/.dotnet:${PATH}"
RUN wget https://dot.net/v1/dotnet-install.sh && \
chmod 777 dotnet-install.sh && \
./dotnet-install.sh -c 9.0 && \
rm dotnet-install.sh
ENV DOTNET_ROOT="/root/.dotnet"
# Set PythonDLL variable for PythonNet
ENV PYTHONNET_PYDLL="/opt/miniconda3/lib/libpython3.11.so"
# Install miniconda
ENV CONDA="Miniconda3-py311_24.9.2-0-Linux-aarch64.sh"
ENV PATH="/opt/miniconda3/bin:${PATH}"
RUN wget -q https://cdn.quantconnect.com/miniconda/${CONDA} && \
bash ${CONDA} -b -p /opt/miniconda3 && rm -rf ${CONDA}
# Install java runtime for h2o lib
RUN apt-get update && apt-get install -y alien dpkg-dev debhelper build-essential && wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-aarch64_bin.rpm \
&& alien -i jdk-17.0.12_linux-aarch64_bin.rpm \
&& update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17.0.12-oracle-aarch64/bin/java 1 \
&& rm jdk-17.0.12_linux-aarch64_bin.rpm
# Avoid pip install read timeouts
ENV PIP_DEFAULT_TIMEOUT=120
# Install numpy first to avoid it not being resolved when installing libraries that depend on it next
RUN pip install --no-cache-dir numpy==1.26.4
# Install newer (than provided by ubuntu) cmake required by scikit build process
RUN conda install -c conda-forge cmake==3.28.4 && conda clean -y --all
# The list of packages in this image is shorter than the list in the AMD images
# This list only includes packages that can be installed within 2 minutes on ARM
RUN pip install --no-cache-dir \
cython==3.0.9 \
pandas==2.1.4 \
scipy==1.11.4 \
numpy==1.26.4 \
wrapt==1.16.0 \
astropy==7.0.0 \
beautifulsoup4==4.12.3 \
dill==0.3.8 \
jsonschema==4.23.0 \
lxml==5.3.0 \
msgpack==1.1.0 \
numba==0.59.1 \
xarray==2024.11.0 \
plotly==5.24.1 \
jupyterlab==4.3.2 \
ipywidgets==8.1.5 \
jupyterlab-widgets==3.0.13 \
tensorflow==2.18.0 \
docutils==0.21.2 \
gensim==4.3.3 \
keras==3.7.0 \
lightgbm==4.5.0 \
nltk==3.9.1 \
graphviz==0.20.3 \
cmdstanpy==1.2.4 \
copulae==0.7.9 \
featuretools==1.31.0 \
PuLP==2.9.0 \
pymc==5.19.0 \
rauth==0.7.3 \
scikit-learn==1.4.2 \
scikit-optimize==0.10.2 \
aesara==2.9.4 \
tsfresh==0.20.2 \
tslearn==0.6.3 \
tweepy==4.14.0 \
PyWavelets==1.7.0 \
umap-learn==0.5.7 \
fastai==2.7.18 \
arch==7.2.0 \
copulas==0.12.0 \
cufflinks==0.17.3 \
gym==0.26.2 \
deap==1.4.1 \
pykalman==0.9.7 \
cvxpy==1.6.0 \
pyro-ppl==1.9.1 \
sklearn-json==0.1.0 \
dtw-python==1.5.3 \
gluonts==0.16.0 \
gplearn==0.4.2 \
jax==0.4.35 \
pennylane==0.39.0 \
PennyLane-Lightning==0.39.0 \
pennylane-qiskit==0.36.0 \
mplfinance==0.12.10b0 \
hmmlearn==0.3.3 \
ta==0.11.0 \
seaborn==0.13.2 \
optuna==4.1.0 \
findiff==0.10.2 \
sktime==0.26.0 \
hyperopt==0.2.7 \
bayesian-optimization==2.0.0 \
matplotlib==3.7.5 \
sdeint==0.3.0 \
pandas_market_calendars==4.4.2 \
ruptures==1.1.9 \
simpy==4.1.1 \
scikit-learn-extra==0.3.0 \
ray==2.40.0 \
"ray[tune]"==2.40.0 \
"ray[rllib]"==2.40.0 \
"ray[data]"==2.40.0 \
"ray[train]"==2.40.0 \
fastText==0.9.3 \
h2o==3.46.0.6 \
prophet==1.1.6 \
Riskfolio-Lib==6.1.1 \
torch==2.5.1 \
torchvision==0.20.1 \
ax-platform==0.4.3 \
alphalens-reloaded==0.4.5 \
pyfolio-reloaded==0.9.8 \
altair==5.5.0 \
modin==0.26.1 \
persim==0.3.7 \
ripser==0.6.10 \
pydmd==2024.12.1 \
EMD-signal==1.6.4 \
spacy==3.7.5 \
pandas-ta==0.3.14b \
pytorch-ignite==0.5.1 \
tensorly==0.9.0 \
mlxtend==0.23.3 \
shap==0.46.0 \
lime==0.2.0.1 \
mpmath==1.3.0 \
polars==1.16.0 \
stockstats==0.6.2 \
QuantStats==0.0.64 \
hurst==0.0.5 \
numerapi==2.19.1 \
pymdptoolbox==4.0-b3 \
panel==1.5.4 \
hvplot==0.11.1 \
py-heat==0.0.6 \
py-heat-magic==0.0.2 \
bokeh==3.6.2 \
river==0.21.0 \
stumpy==1.13.0 \
pyvinecopulib==0.6.5 \
ijson==3.3.0 \
jupyter-resource-usage==1.1.0 \
injector==0.22.0 \
openpyxl==3.1.5 \
xlrd==2.0.1 \
mljar-supervised==1.1.9 \
dm-tree==0.1.8 \
lz4==4.3.3 \
ortools==9.9.3963 \
py_vollib==1.0.1 \
thundergbm==0.3.17 \
yellowbrick==1.5 \
livelossplot==0.5.5 \
gymnasium==1.0.0 \
interpret==0.6.7 \
DoubleML==0.9.0 \
jupyter-bokeh==4.0.5 \
imbalanced-learn==0.12.4 \
openai==1.57.0 \
lazypredict==0.2.14a1 \
darts==0.31.0 \
fastparquet==2024.11.0 \
tables==3.10.1 \
dimod==0.12.17 \
dwave-samplers==1.3.0 \
python-statemachine==2.5.0 \
pymannkendall==1.4.3 \
Pyomo==6.8.2 \
gpflow==2.9.2 \
pyarrow==15.0.1 \
dwave-ocean-sdk==8.0.1 \
chardet==5.2.0 \
stable-baselines3==2.4.0 \
Shimmy==2.0.0 \
FixedEffectModel==0.0.5 \
transformers==4.46.3 \
langchain==0.2.17 \
pomegranate==1.1.1 \
MAPIE==0.9.1 \
mlforecast==0.15.1 \
x-transformers==1.42.24 \
Werkzeug==3.1.3 \
nolds==0.6.1 \
feature-engine==1.6.2 \
pytorch-tabnet==4.1.0 \
opencv-contrib-python-headless==4.10.0.84 \
POT==0.9.5 \
alibi-detect==0.12.0 \
datasets==2.21.0 \
scikeras==0.13.0 \
contourpy==1.3.1
# Install dwave tool
RUN dwave install --all -y
# Install 'ipopt' solver for 'Pyomo'
RUN conda install -c conda-forge ipopt==3.14.16 \
&& conda clean -y --all
# We install need to install separately else fails to find numpy
RUN pip install --no-cache-dir iisignature==0.24
# Install spacy models
RUN python -m spacy download en_core_web_md && python -m spacy download en_core_web_sm
RUN conda config --set solver classic && conda install -y -c conda-forge \
openmpi=5.0.6 \
&& conda clean -y --all
# Install nltk data
RUN python -m nltk.downloader -d /usr/share/nltk_data punkt && \
python -m nltk.downloader -d /usr/share/nltk_data punkt_tab && \
python -m nltk.downloader -d /usr/share/nltk_data vader_lexicon && \
python -m nltk.downloader -d /usr/share/nltk_data stopwords && \
python -m nltk.downloader -d /usr/share/nltk_data wordnet
# Install Pyrb
RUN wget -q 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 -q 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 uni2ts
RUN wget -q https://cdn.quantconnect.com/uni2ts/uni2ts-main-ffe78db.zip && \
unzip -q uni2ts-main-ffe78db.zip && cd uni2ts-main && \
pip install . && cd .. && rm -rf uni2ts-main && rm uni2ts-main-ffe78db.zip
# Install chronos-forecasting
RUN wget -q https://cdn.quantconnect.com/chronos-forecasting/chronos-forecasting-main-b0bdbd9.zip && \
unzip -q chronos-forecasting-main-b0bdbd9.zip && cd chronos-forecasting-main && \
pip install ".[training]" && cd .. && rm -rf chronos-forecasting-main && rm chronos-forecasting-main-b0bdbd9.zip
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
# Install wkhtmltopdf and xvfb to support HTML to PDF conversion of reports
RUN apt-get update && apt install -y xvfb wkhtmltopdf && \
apt-get clean && apt-get autoclean && apt-get autoremove --purge -y && rm -rf /var/lib/apt/lists/*
# Install fonts for matplotlib
RUN wget -q https://cdn.quantconnect.com/fonts/foundation.zip && unzip -q foundation.zip && rm foundation.zip \
&& mv "lean fonts/"* /usr/share/fonts/truetype/ && rm -rf "lean fonts/" "__MACOSX/"
# label definitions
LABEL strict_python_version=3.11.11
LABEL python_version=3.11
LABEL target_framework=net9.0