github.com/sentienttechnologies/studio-go-runner@v0.0.0-20201118202441-6d21f2ced8ee/Dockerfile_developer (about)

     1  FROM ubuntu:18.04
     2  
     3  MAINTAINER karlmutch@gmail.com
     4  
     5  ENV LANG C.UTF-8
     6  ENV DEBIAN_FRONTEND noninteractive
     7  
     8  ENV CUDA_PACKAGE_VERSION 10-1
     9  ENV CUDA_FILESYS_VERSION 10.1
    10  ENV NVIDIA_VERSION 440
    11  
    12  RUN apt-get update && \
    13      apt-get install -y locales && \
    14      apt-get install -y language-pack-en && \
    15      update-locale "en_US.UTF-8" && \
    16      apt-get install -y --no-install-recommends ca-certificates apt-transport-https apt-utils && \
    17      apt-get install -y --no-install-recommends openssl ssh wget curl lshw jq htop vim pkg-config unzip gnupg2 && \
    18      apt-get install -y --no-install-recommends libopenblas-base && \
    19      apt-get -y upgrade && \
    20      apt-get clean
    21  
    22  RUN mkdir /usr/lib/nvidia && \
    23      cd /tmp && \
    24      apt-get install -y freeglut3 freeglut3-dev libxi-dev libxmu-dev && \
    25      apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub && \
    26      wget -q -O /tmp/cuda.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb && \
    27      dpkg -i /tmp/cuda.deb && \
    28      apt-get -y update
    29  
    30  RUN apt-get -y install --no-install-recommends nvidia-cuda-dev && \
    31      apt-get -y install --no-install-recommends cuda-nvml-dev-${CUDA_PACKAGE_VERSION} && \
    32      apt-get clean
    33  
    34  RUN \
    35      ls /usr/lib | grep nvidia && \
    36      ln -s /usr/local/cuda-${CUDA_FILESYS_VERSION} /usr/local/cuda && \
    37      ln -s /usr/local/cuda/targets/x86_64-linux/include /usr/local/cuda/include && \
    38      ln -s /usr/lib/nvidia-${NVIDIA_VERSION}/libnvidia-ml.so /usr/lib/nvidia/libnvidia-ml.so && \
    39      ln -s /usr/lib/nvidia-${NVIDIA_VERSION}/libnvidia-ml.so.1 /usr/lib/nvidia/libnvidia-ml.so.1 && \
    40      ln -s /usr/lib/nvidia-${NVIDIA_VERSION}/libnvidia-ml.so.${NVIDIA_VERSION}.33.01 /usr/lib/nvidia/libnvidia-ml.so.${NVIDIA_VERSION}.33.01 && \
    41      apt-get -y install --no-install-recommends libcuinj64-9.1 && \
    42      rm /tmp/cuda*.deb && \
    43      apt-get -y autoclean && \
    44      apt-get -y autoremove && \
    45      apt-get clean
    46  
    47  # Install the runtime components for nvidia
    48  
    49  RUN \
    50      rm -rf /var/lib/apt/lists/* && \
    51      echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list && \
    52      echo "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/nvidia-ml.list && \
    53      apt-get update
    54  
    55  RUN apt-get install -y --no-install-recommends \
    56          cuda-cudart-10-1 \
    57          cuda-cufft-10-1 \
    58          cuda-curand-10-1 \
    59          cuda-cusolver-10-1 \
    60          cuda-cusparse-10-1 \
    61          cuda-libraries-10-1 \
    62          libcublas10=10.2.1.243-1
    63  
    64  RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \
    65      echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf
    66  
    67  RUN apt-get install -y libssl-dev zlib1g-dev \
    68      libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
    69      libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl \
    70      libopenblas-base libopenblas-dev \
    71      git build-essential
    72  
    73  # Protobuf version
    74  ENV PROTOBUF_VERSION="3.12.3"
    75  ENV PROTOBUF_ZIP=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip
    76  ENV PROTOBUF_URL=https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOBUF_ZIP}
    77  
    78  RUN wget ${PROTOBUF_URL} && \
    79      unzip ${PROTOBUF_ZIP} -d /usr && \
    80      chmod +x /usr/bin/protoc && \
    81      find /usr/include/google -type d -print0 | xargs -0 chmod ugo+rx && \
    82      chmod -R +r /usr/include/google
    83  
    84  ENV USER {{.duat.userName}}
    85  ENV USER_ID {{.duat.userID}}
    86  ENV USER_GROUP_ID {{.duat.userGroupID}}
    87  ENV RUNNER_BUILD_LOG {{ env "RUNNER_BUILD_LOG" | default "build.log" }}
    88  
    89  RUN groupadd -f -g ${USER_GROUP_ID} $USER} && \
    90      useradd -g ${USER_GROUP_ID} -u ${USER_ID} -ms /bin/bash ${USER}
    91  
    92  USER ${USER}
    93  WORKDIR /home/${USER}
    94  
    95  ENV GOPATH=/project
    96  ENV PATH=$GOPATH/bin:$PATH
    97  ENV PATH=$PATH:/home/${USER}/.local/bin:/home/${USER}/go/bin:/home/${USER}/.pyenv/bin
    98  ENV GOROOT=/home/${USER}/go
    99  ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia:/usr/lib/nvidia-${NVIDIA_VERSION}
   100  
   101  RUN \
   102      curl https://pyenv.run | /bin/bash && \
   103      export PATH=$HOME/.pyenv/bin:$PATH && \
   104      echo "export PATH=\"$HOME/.pyenv/bin:$PATH\"" >> $HOME/.bashrc && \
   105      echo "eval \"\$(pyenv init -)\"" >> $HOME/.bashrc && \
   106      echo "eval \"\$(pyenv virtualenv-init -)\"" >> $HOME/.bashrc && \
   107      eval "$(pyenv init -)" && \
   108      eval "$(pyenv virtualenv-init -)" && \
   109      pyenv install --list | grep " 3\.[5678]" && \
   110      pyenv install 3.8.3 && \
   111      pyenv global 3.8.3
   112  
   113  RUN \
   114      eval "$(pyenv init -)" && \
   115      eval "$(pyenv virtualenv-init -)" && \
   116      curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \
   117      python3 get-pip.py pip==20.1 setuptools==44.0.0 wheel==0.33.6 && \
   118      pip3 install pyopenssl cryptography --upgrade
   119  
   120  ENV GO_VERSION 1.14.4
   121  
   122  RUN \
   123      cd /home/${USER} && \
   124      mkdir -p /home/${USER}/go && \
   125      wget -q -O /tmp/go.tgz https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz && \
   126      tar xzf /tmp/go.tgz && \
   127      rm /tmp/go.tgz
   128  
   129  RUN \
   130      mkdir -p /home/${USER}/.local/bin && \
   131      wget -q -O /home/${USER}/.local/bin/minio https://dl.minio.io/server/minio/release/linux-amd64/minio && \
   132      chmod +x /home/${USER}/.local/bin/minio
   133  
   134  VOLUME /project
   135  WORKDIR /project/src/github.com/leaf-ai/studio-go-runner
   136  
   137  # delete the following once initial test is running
   138  #
   139  ENV AMQP_URL "amqp://guest:guest@${RABBITMQ_SERVICE_SERVICE_HOST}:${RABBITMQ_SERVICE_SERVICE_PORT}/%2f?connection_attempts=2&retry_delay=.5&socket_timeout=5"
   140  
   141  CMD /bin/bash -c 'source ./base-build.sh'
   142  
   143  # Done last to prevent lots of disruption when bumping versions
   144  LABEL vendor="Cognizant, AI&A" \
   145        dev.cognizant-ai.module.version={{.duat.version}} \
   146        dev.cognizant-ai.module.name={{.duat.module}}