# Ubuntu 20.04 (focal)
# https://hub.docker.com/_/ubuntu/?tab=tags&name=focal
ARG ROOT_CONTAINER=ubuntu:focal
FROM $ROOT_CONTAINER
LABEL maintainer="The BigDL Authors"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
USER root
# Install OS dependencies for bigdl orca
# - tini is installed as a helpful container entrypoint that reaps zombie
# processes and such of the actual executable we want to start, see
# https://github.com/krallin/tini#why-tini for details.
# - apt-get upgrade is run to patch known vulnerabilities in apt-get packages as
# the ubuntu base image is rebuilt too seldom sometimes (less than once a month)
ENV DEBIAN_FRONTEND noninteractive
RUN apt update --yes && \
apt upgrade --yes && \
apt install --yes \
--no-install-recommends \
tini \
wget \
sudo \
locales \
fonts-liberation \
openssh-server \
git \
htop apt-utils ca-certificates vim \
openjdk-8-jdk \
scala \
maven && \
apt clean && rm -rf /var/lib/apt/lists/* && \
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \
locale-gen;
# Configure environment
ENV CONDA_DIR=/opt/conda \
SHELL=/bin/bash \
LC_ALL=en_US.UTF-8 \
LANG=en_US.UTF-8 \
LANGUAGE=en_US.UTF-8
ENV PATH="${CONDA_DIR}/bin:${PATH}:/usr/local/scala/bin" \
HOME="/root" \
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# Enable prompt color in the skeleton .bashrc
# hadolint ignore=SC2016
RUN sed -i 's/^#force_color_prompt=yes/force_color_prompt=yes/' /etc/skel/.bashrc && \
# Add call to conda init script see https://stackoverflow.com/a/58081608/4413446
echo 'eval "$(command conda shell.bash hook 2> /dev/null)"' >> /etc/skel/.bashrc && \
sed -i 's/^#force_color_prompt=yes/force_color_prompt=yes/' ${HOME}/.bashrc
ARG PYTHON_VERSION=default
# Install conda and check the sha256 sum provided on the download site
WORKDIR /tmp
# CONDA_MIRROR is a mirror prefix to speed up downloading
# For example, people from mainland China could set it as
# https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda
ARG CONDA_MIRROR=https://repo.anaconda.com/miniconda
# ARG CONDA_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda
# ---- Miniconda installer ----
# Check https://docs.conda.io/en/latest/miniconda.html
# Package Manager and Python implementation to use (https://docs.conda.io/en/latest/miniconda.html)
RUN set -x && \
# Miniconda3 installer
mkdir -p "${CONDA_DIR}" && \
miniconda_arch=$(uname -m) && \
miniconda_installer="Miniconda3-latest-Linux-${miniconda_arch}.sh" && \
wget "${CONDA_MIRROR}/${miniconda_installer}" && \
/bin/bash "${miniconda_installer}" -f -b -p "${CONDA_DIR}" && \
rm "${miniconda_installer}" && \
# Conda configuration see https://conda.io/projects/conda/en/latest/configuration.html
conda config --system --set auto_update_conda false && \
conda config --system --set show_channel_urls true && \
if [[ "${PYTHON_VERSION}" != "default" ]]; then conda install --quiet --yes python="${PYTHON_VERSION}"; fi && \
conda list python | grep '^python ' | tr -s ' ' | cut -d ' ' -f 1,2 >> "${CONDA_DIR}/conda-meta/pinned" && \
# Using conda to update all packages: https://github.com/mamba-org/mamba/issues/1092
conda update --all --quiet --yes && \
conda clean --all -f -y && \
rm -rf "/root/.cache/yarn" && \
conda init bash
# Configure container startup
ENTRYPOINT ["/bin/bash"]
WORKDIR "${HOME}"