Last active
May 20, 2020 11:51
-
-
Save ptigas/a5dbd9593fb066e3448adb6b2836bb5c to your computer and use it in GitHub Desktop.
CUDA + Theano + UR + Gym gazebo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM ubuntu:14.04 | |
LABEL maintainer "NVIDIA CORPORATION <[email protected]>" | |
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