Skip to content

Instantly share code, notes, and snippets.

@ptigas
Last active May 20, 2020 11:51
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ptigas/a5dbd9593fb066e3448adb6b2836bb5c to your computer and use it in GitHub Desktop.
Save ptigas/a5dbd9593fb066e3448adb6b2836bb5c to your computer and use it in GitHub Desktop.
CUDA + Theano + UR + Gym gazebo
FROM ubuntu:14.04
LABEL maintainer "NVIDIA CORPORATION <cudatools@nvidia.com>"
LABEL com.nvidia.volumes.needed="nvidia_driver"
RUN NVIDIA_GPGKEY_SUM=d1be581509378368edeec8c1eb2958702feedf3bc3d17011adbf24efacce4ab5 && \
NVIDIA_GPGKEY_FPR=ae09fe4bbd223a84b2ccfce3f60f4b3d7fa2af80 && \
apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && \
apt-key adv --export --no-emit-version -a $NVIDIA_GPGKEY_FPR | tail -n +2 > cudasign.pub && \
echo "$NVIDIA_GPGKEY_SUM cudasign.pub" | sha256sum -c --strict - && rm cudasign.pub && \
echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64 /" > /etc/apt/sources.list.d/cuda.list
ENV CUDA_VERSION 8.0.61
LABEL com.nvidia.cuda.version="${CUDA_VERSION}"
ENV CUDA_PKG_VERSION 8-0=$CUDA_VERSION-1
RUN apt-get update && apt-get install -y --no-install-recommends \
cuda-nvrtc-$CUDA_PKG_VERSION \
cuda-nvgraph-$CUDA_PKG_VERSION \
cuda-cusolver-$CUDA_PKG_VERSION \
cuda-cublas-$CUDA_PKG_VERSION \
cuda-cufft-$CUDA_PKG_VERSION \
cuda-curand-$CUDA_PKG_VERSION \
cuda-cusparse-$CUDA_PKG_VERSION \
cuda-npp-$CUDA_PKG_VERSION \
cuda-cudart-$CUDA_PKG_VERSION && \
ln -s cuda-8.0 /usr/local/cuda && \
rm -rf /var/lib/apt/lists/*
RUN echo "/usr/local/cuda/lib64" >> /etc/ld.so.conf.d/cuda.conf && \
ldconfig
RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \
echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64
# Install git, wget, python-dev, pip, BLAS + LAPACK and other dependencies
RUN apt-get update && apt-get install -y \
gfortran \
git \
wget \
liblapack-dev \
libopenblas-dev \
python-dev \
python-pip \
python-nose \
python-numpy \
python-scipy
ENV DEBIAN_FRONTEND noninteractive
# upgrade pip
RUN pip install -U pip
RUN apt-get install -y lsb-release
# Set CUDA_ROOT
ENV CUDA_ROOT /usr/local/cuda/bin
# Install bleeding-edge Theano
RUN pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git
RUN pip install --upgrade six
# Set up .theanorc for CUDA
RUN echo "[global]\ndevice=gpu\nfloatX=float32\noptimizer_including=cudnn\n[lib]\ncnmem=0.1\n[nvcc]\nfastmath=True" > /root/.theanorc
# Set universal robot
# using bash instead of sh to be able to source
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN apt-get update && \
apt-get install -y wget && \
echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list && \
wget http://packages.ros.org/ros.key -O - | apt-key add - &&\
echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list && \
wget http://packages.osrfoundation.org/gazebo.key -O - | apt-key add - && \
apt-get update && \
apt-get remove -y gazebo2 && \
apt-get install -y ros-indigo-desktop && \
apt-get install -y python-catkin-tools && \
apt-get install -y gazebo7 && \
apt-get install -y libgazebo7-dev && \
mkdir -p /workspace/src && \
cd /workspace/ && \
source /opt/ros/indigo/setup.bash && \
catkin init
COPY . /workspace/src/
ENV TERM xterm
RUN source /opt/ros/indigo/setup.bash && \
cd /workspace/src && \
git clone -b indigo-devel https://github.com/ros-simulation/gazebo_ros_pkgs.git && \
cd /workspace/src && \
mkdir -p /etc/ros/rosdep/sources.list.d/ && \
wget https://raw.githubusercontent.com/osrf/osrf-rosdep/master/gazebo7/00-gazebo7.list -O /etc/ros/rosdep/sources.list.d/00-gazebo7.list && \
rm -rf /etc/ros/rosdep && \
rosdep init && \
rosdep update && \
rosdep install --default-yes --all --ignore-src && \
catkin build
# installing gzweb
RUN curl -sL https://deb.nodesource.com/setup | bash - && \
apt-get install -y libjansson-dev nodejs libboost-dev imagemagick libtinyxml-dev mercurial cmake build-essential xvfb
RUN /workspace/src/setup_gzweb.sh
RUN apt-get install -y byobu nano
# cleanup
RUN rm -rf /var/lib/apt/lists/*
# GYM GAZEBO
# Get the dependencies
RUN apt-get update \
&& apt-get install -y xorg-dev \
libgl1-mesa-dev \
xvfb \
libxinerama1 \
libxcursor1 \
unzip \
libglu1-mesa \
libav-tools \
python-numpy \
python-scipy \
python-pyglet \
python-setuptools \
libpq-dev \
libjpeg-dev \
wget \
curl \
cmake \
git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& easy_install pip
WORKDIR /usr/local/gym
# Copy the code
RUN mkdir gym-gazebo
COPY . /usr/local/gym/gym-gazebo
#--------------------
# Install gym
#--------------------
# Clone the official gym
RUN git clone https://github.com/openai/gym
# Install the gym's requirements
RUN pip install -r gym/requirements.txt
# Install the gym
RUN ls -l
RUN pip install -e gym/
# Checks
#RUN python --version
#RUN python -c "import gym"
# Debug
#RUN ls -l /usr/local/gym
#RUN ls -l /usr/local/gym/gym-gazebo
#RUN ls -l /usr/local/gym/gym
#--------------------
# Install ROS
#--------------------
# setup environment
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
# setup keys
RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 421C365BD9FF1F717815A3895523BAEEB01FA116
# setup sources.list
RUN echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list
# install bootstrap tools
RUN apt-get update && apt-get install --no-install-recommends -y \
python-rosdep \
python-rosinstall \
python-vcstools \
&& rm -rf /var/lib/apt/lists/*
# bootstrap rosdep
RUN rosdep init \
&& rosdep update
# install ros packages
ENV ROS_DISTRO indigo
RUN apt-get update && apt-get install -y \
ros-indigo-ros-core=1.1.4-0* \
&& rm -rf /var/lib/apt/lists/*
# ros-indigo-desktop-full
#--------------------
# Install Gazebo
#--------------------
RUN sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
RUN wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
RUN sudo apt-get update
RUN sudo apt-get install gazebo7 libgazebo7-dev -y
# setup environment
EXPOSE 11345
# Install additional dependencies
RUN apt-get install -y ros-indigo-cv-bridge
RUN apt-get install -y ros-indigo-robot-state-publisher
#--------------------
# Install deep learning toolkits
#--------------------
# install dependencies
RUN sudo pip install h5py
RUN sudo apt-get install gfortran -y
# install sript specific dependencies (temporal)
RUN sudo apt-get install python-skimage -y
# install Keras
RUN sudo pip install keras
#--------------------
# Install gym-gazebo
#--------------------
RUN cd gym-gazebo && sudo pip install -e .
# install dependencies
RUN cd /usr/local/gym/gym-gazebo/gym_gazebo/envs/installation && bash setup.bash
# setup entrypoint
COPY ./entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
CMD ["bash"]
VOLUME /workspace
EXPOSE 8080 8081 7681
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment