Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Dockerfile 3.13 KiB
# SPDX-License-Identifier: Apache-2.0

ARG UBUNTU_VERSION=18.04
ARG CUDA=10.1
FROM nvidia/cudagl:${CUDA}-base-ubuntu${UBUNTU_VERSION}

LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>"
LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>"

ARG CUDA
ARG CUDNN
ARG CUDNN_MAJOR_VERSION
ARG LIBNVINFER
ARG LIBNVINFER_MAJOR_VERSION

ENV CUDA ${CUDA}
ENV CUDNN ${CUDNN:-7.6.4.38-1}
ENV CUDNN_MAJOR_VERSION ${CUDNN_MAJOR_VERSION:-7}
ENV LIBNVINFER ${LIBNVINFER:-6.0.1-1}
ENV LIBNVINFER_MAJOR_VERSION ${LIBNVINFER_MAJOR_VERSION:-6}

ENV CUDA_TOOLKIT_PATH /usr/local/cuda-${CUDA}

ARG TZ=Europe/Berlin
ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y --no-install-recommends apt-utils >/dev/null 2>&1 && \
    apt-get install -y --no-install-recommends software-properties-common && \
    apt-get update && \
    apt-get install -y locales && \
    locale-gen en_US.UTF-8 && \
    echo $TZ > /etc/timezone && \
    apt-get install -y tzdata && \
    rm /etc/localtime && \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
    dpkg-reconfigure -f noninteractive tzdata && \
    apt-get install -y --no-install-recommends \
        build-essential \
        pkg-config \
        git \
        file \
        nano \
        zip \
        unzip \
        curl \
        wget \
        rsync \
        && \
    apt-get install -y \
        python3-dev \
        python3-pip \
        python3-venv \
        python3-setuptools \
        python3-distutils \
        && \
    apt-get clean

RUN /bin/bash -c "apt-get update && \
    apt-get install -y --no-install-recommends \
        cuda-command-line-tools-\${CUDA/./-} \
        libcublas10=10.2.1.243-1 \ 
        libcublas-dev=10.2.1.243-1 \
        cuda-nvrtc-\${CUDA/./-} \
        cuda-nvrtc-dev-\${CUDA/./-} \
        cuda-cudart-dev-\${CUDA/./-} \
        cuda-cufft-dev-\${CUDA/./-} \
        cuda-curand-dev-\${CUDA/./-} \
        cuda-cusolver-dev-\${CUDA/./-} \
        cuda-cusparse-dev-\${CUDA/./-} \
        libcudnn7=\${CUDNN}+cuda\${CUDA} \
        libcudnn7-dev=\${CUDNN}+cuda\${CUDA} \
        && \
    find /usr/local/cuda-\${CUDA}/lib64/ -type f -name 'lib*_static.a' -not -name 'libcudart_static.a' -delete && \
    rm /usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a && \
    apt-get install -y --no-install-recommends \
        libnvinfer\${LIBNVINFER_MAJOR_VERSION}=\${LIBNVINFER}+cuda\${CUDA} \
        libnvinfer-dev=\${LIBNVINFER}+cuda\${CUDA} \
        libnvinfer-plugin-dev=\${LIBNVINFER}+cuda\${CUDA} \
        libnvinfer-plugin\${LIBNVINFER_MAJOR_VERSION}=\${LIBNVINFER}+cuda\${CUDA}"

RUN apt-get update && \
    apt-get install -y \
        libglu1-mesa \
        libjpeg62 \
        liborc-0.4 \
        ffmpeg \
        && \
    apt-get clean

COPY pip.conf /etc/

ENV PYTHON_VERSION=3.8
ENV PYTHON_PIP_VERSION=20.2.3
ENV PYTHON_SETUPTOOLS_VERSION=50.3.0

RUN apt-get install -y \
        python${PYTHON_VERSION} \
        python${PYTHON_VERSION}-dev \
        python${PYTHON_VERSION}-venv \
        && \
    apt-get clean && \
    python${PYTHON_VERSION} -m pip install --upgrade \
        pip==${PYTHON_PIP_VERSION} \
        setuptools==${PYTHON_SETUPTOOLS_VERSION}