-
Notifications
You must be signed in to change notification settings - Fork 99
/
Copy pathDockerfile
129 lines (112 loc) · 4.17 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Ubuntu 18.04 with nvidia-docker2 beta opengl support
FROM nvidia/opengl:1.0-glvnd-devel-ubuntu18.04
# Tools I find useful during development
RUN apt-get update -qq \
&& apt-get install -y -qq \
build-essential \
bwm-ng \
cmake \
cppcheck \
gdb \
git \
g++-8 \
libbluetooth-dev \
libccd-dev \
libcwiid-dev \
libfcl-dev \
libgoogle-glog-dev \
libspnav-dev \
libusb-dev \
lsb-release \
python3-dbg \
python3-empy \
python3-numpy \
python3-setuptools \
python3-pip \
python3-venv \
ruby2.5 \
ruby2.5-dev \
software-properties-common \
sudo \
vim \
wget \
net-tools \
iputils-ping \
libyaml-cpp-dev \
&& apt-get clean -qq
# Add a user with the same user_id as the user outside the container
# Requires a docker build argument `user_id`
ARG user_id
ENV USERNAME developer
RUN useradd -U --uid ${user_id} -ms /bin/bash $USERNAME \
&& echo "$USERNAME:$USERNAME" | chpasswd \
&& adduser $USERNAME sudo \
&& echo "$USERNAME ALL=NOPASSWD: ALL" >> /etc/sudoers.d/$USERNAME
# Commands below run as the developer user
USER $USERNAME
# Make a couple folders for organizing docker volumes
RUN mkdir ~/workspaces ~/other
# When running a container start in the developer's home folder
WORKDIR /home/$USERNAME
RUN export DEBIAN_FRONTEND=noninteractive \
&& sudo apt-get update -qq \
&& sudo -E apt-get install -y -qq \
tzdata \
&& sudo ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime \
&& sudo dpkg-reconfigure --frontend noninteractive tzdata \
&& sudo apt-get clean -qq
# install ROS and required packages
RUN sudo /bin/sh -c 'echo "deb [trusted=yes] http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' \
&& sudo /bin/sh -c 'apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' \
&& sudo apt-get update -qq \
&& sudo apt-get install -y -qq \
libpcl-dev \
libpcl-conversions-dev \
python-catkin-tools \
python-rosdep \
python-rosinstall \
ros-melodic-desktop \
ros-melodic-joystick-drivers \
ros-melodic-pcl-ros \
ros-melodic-pointcloud-to-laserscan \
ros-melodic-robot-localization \
ros-melodic-spacenav-node \
ros-melodic-tf2-sensor-msgs \
ros-melodic-twist-mux \
ros-melodic-rviz-imu-plugin \
ros-melodic-rotors-control \
ros-melodic-control-toolbox \
&& sudo rosdep init \
&& sudo apt-get clean -qq
RUN rosdep update
# install ign-dome
RUN sudo /bin/sh -c 'echo "deb [trusted=yes] http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' \
&& sudo /bin/sh -c 'wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -' \
&& sudo apt-get update -qq \
&& sudo apt-get install -y -qq \
ignition-dome \
&& sudo apt-get clean -qq
# install the ros to ign bridge
RUN sudo apt-get update -qq \
&& sudo apt-get install -y -qq \
ros-melodic-ros-ign \
&& sudo apt-get clean -qq
# Clone all the subt models so that you don't download them every time
# docker is run
RUN mkdir -p subt_ws/src \
&& cd subt_ws/src \
&& git clone https://github.com/osrf/subt
# Download the public models
RUN ign fuel download -v 4 -j 16 -u "https://fuel.ignitionrobotics.org/OpenRobotics/collections/SubT Tech Repo"
WORKDIR /home/$USERNAME/subt_ws
# Install Rotors
# RUN wget https://s3.amazonaws.com/osrf-distributions/subt_robot_examples/releases/subt_robot_examples_latest.tgz
# RUN tar xvf subt_robot_examples_latest.tgz
# build the subt tech repo (set gcc to version 8 first)
RUN sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8
RUN /bin/bash -c 'source /opt/ros/melodic/setup.bash && catkin_make -DCMAKE_BUILD_TYPE=Release install'
RUN /bin/sh -c 'echo ". /opt/ros/melodic/setup.bash" >> ~/.bashrc' \
&& /bin/sh -c 'echo ". ~/subt_ws/install/setup.sh" >> ~/.bashrc'
# Customize your image here.
# E.g.:
# ENV PATH="/opt/sublime_text:$PATH"