Skip to content
Snippets Groups Projects
latest.Dockerfile 2.81 KiB
Newer Older
Olivier Benz's avatar
Olivier Benz committed
ARG IMAGE=debian:bullseye
ARG BLAS=libopenblas-dev
ARG R_VERSION
ARG CRAN=https://cran.rstudio.com
Olivier Benz's avatar
Olivier Benz committed
FROM registry.gitlab.b-data.ch/r/rsi/${R_VERSION}/${IMAGE} as rsi
Olivier Benz's avatar
Olivier Benz committed
FROM ${IMAGE}

LABEL org.opencontainers.image.licenses="GPL-2.0" \
      org.opencontainers.image.source="https://gitlab.b-data.ch/rocker/docker-stack" \
Olivier Benz's avatar
Olivier Benz committed
      org.opencontainers.image.vendor="b-data GmbH" \
      org.opencontainers.image.authors="Olivier Benz <olivier.benz@b-data.ch>"

Olivier Benz's avatar
Olivier Benz committed
ARG DEBIAN_FRONTEND=noninteractive

ARG BLAS
ARG R_VERSION
ARG CRAN
ARG BUILD_DATE
Carl Boettiger's avatar
Carl Boettiger committed
## Setting a BUILD_DATE will set CRAN to the matching MRAN date
## No BUILD_DATE means that CRAN will default to latest 
Olivier Benz's avatar
Olivier Benz committed
ENV BASE_IMAGE=${IMAGE} \
    R_VERSION=${R_VERSION} \
    CRAN=${CRAN} \ 
    LANG=en_US.UTF-8 \
Olivier Benz's avatar
Olivier Benz committed
    TERM=xterm \
    TZ=Etc/UTC

COPY --from=rsi /usr/local /usr/local

RUN apt-get update \
  && apt-get install -y --no-install-recommends \
    bash-completion \
Olivier Benz's avatar
Olivier Benz committed
    build-essential \
    ca-certificates \
Olivier Benz's avatar
Olivier Benz committed
    devscripts \
    file \
    fonts-texgyre \
    g++ \
    gfortran \
    gsfonts \
Olivier Benz's avatar
Olivier Benz committed
    libbz2-dev \
    '^libcurl[3|4]$' \
    libicu-dev \
    '^libjpeg.*-turbo.*-dev$' \
    liblapack-dev \
Olivier Benz's avatar
Olivier Benz committed
    liblzma-dev \
    ${BLAS} \
Olivier Benz's avatar
Olivier Benz committed
    libpangocairo-1.0-0 \
Olivier Benz's avatar
Olivier Benz committed
    libpaper-utils \
    '^libpcre[2|3]-dev$' \
    libpng-dev \
    libreadline-dev \
Olivier Benz's avatar
Olivier Benz committed
    libtiff5 \
    locales \
Olivier Benz's avatar
Olivier Benz committed
    pkg-config \
    unzip \
    zip \
    zlib1g \
  ## Switch BLAS/LAPACK (manual mode)
  && if [ ${BLAS} = "libopenblas-dev" ]; then \
    update-alternatives --set libblas.so.3-$(uname -m)-linux-gnu \
      /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/libblas.so.3; \
    update-alternatives --set liblapack.so.3-$(uname -m)-linux-gnu \
      /usr/lib/$(uname -m)-linux-gnu/openblas-pthread/liblapack.so.3; \
  fi \
Olivier Benz's avatar
Olivier Benz committed
  ## Update locale
Olivier Benz's avatar
Olivier Benz committed
  && sed -i "s/# $LANG/$LANG/g" /etc/locale.gen \
  && locale-gen \
  && update-locale LANG=$LANG \
  ## Add a library directory (for user-installed packages)
  && mkdir -p /usr/local/lib/R/site-library \
  && chown root:staff /usr/local/lib/R/site-library \
  && chmod g+ws /usr/local/lib/R/site-library \
Carl Boettiger's avatar
Carl Boettiger committed
  ## Set configured CRAN mirror
  && if [ -z "$BUILD_DATE" ]; then MRAN=$CRAN; \
   else MRAN=https://mran.microsoft.com/snapshot/${BUILD_DATE}; fi \
  && echo MRAN=$MRAN >> /etc/environment \
  && echo "options(repos = c(CRAN='$MRAN'), download.file.method = 'libcurl')" >> /usr/local/lib/R/etc/Rprofile.site \
  ## Use littler installation scripts
  && Rscript -e "install.packages(c('littler', 'docopt'), repos = '$MRAN')" \
  && ln -s /usr/local/lib/R/site-library/littler/examples/install2.r /usr/local/bin/install2.r \
  && ln -s /usr/local/lib/R/site-library/littler/examples/installGithub.r /usr/local/bin/installGithub.r \
  && ln -s /usr/local/lib/R/site-library/littler/bin/r /usr/local/bin/r \
Olivier Benz's avatar
Olivier Benz committed
  ## Clean up
  && rm -rf /tmp/* \
  && rm -rf /var/lib/apt/lists/*

CMD ["R"]