Skip to content

Commit df86e88

Browse files
committed
🐋 update dockerfiles
1 parent a8da67c commit df86e88

6 files changed

+144
-98
lines changed

.github/workflows/container.yml

+1-3
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
name: Docker Images
1111

1212
on:
13-
release:
14-
types: [released]
1513
push:
1614
branches:
1715
- main
@@ -64,7 +62,7 @@ jobs:
6462
uses: docker/build-push-action@v4
6563
with:
6664
context: .
67-
file: docker/dockerfile-kasm-ubuntu-jammy-desktop-minimal
65+
file: docker/dockerfile-suave
6866
push: true
6967
tags: ${{ steps.meta.outputs.tags }}
7068
labels: ${{ steps.meta.outputs.labels }}

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ Now you can proceed to [run the exemplar](#run-suave).
209209

210210
## Run SUAVE
211211

212-
### Runner [Docker only]
212+
### Runner
213213
#### Trying it out!
214214
If you simply want to try out the exemplar, simply enter the following commands in a terminal:
215215
```Bash

build_docker_images.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
22
CURDIR=`pwd`
33
docker build -t kasm-jammy:dev -f docker/dockerfile-kasm-core-jammy .
4-
docker build -t suave:dev --build-arg BASE_IMAGE=kasm-jammy:dev -f docker/dockerfile-kasm-ubuntu-jammy-desktop-minimal .
4+
docker build -t suave:dev --build-arg BASE_IMAGE=kasm-jammy:dev -f docker/dockerfile-suave .
55
cd $CURDIR

docker/dockerfile-kasm-core-jammy

+5-5
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,12 @@ COPY ./docker/src/ubuntu/install/virtualgl $INST_SCRIPTS/virtualgl/
120120
RUN bash $INST_SCRIPTS/virtualgl/install_virtualgl.sh && rm -rf $INST_SCRIPTS/virtualgl/
121121

122122
### Create user and home directory for base images that don't already define it
123-
RUN (groupadd -g 1000 kasm-user \
124-
&& useradd -M -u 1000 -g 1000 kasm-user \
125-
&& usermod -a -G kasm-user kasm-user) ; exit 0
123+
RUN groupadd -g 1000 kasm-user \
124+
&& adduser --disabled-password --gid 1000 --uid 1000 --gecos '' kasm-user \
125+
&& adduser kasm-user sudo
126+
126127
ENV HOME /home/kasm-user
127128
WORKDIR $HOME
128-
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
129129

130130
### FIX PERMISSIONS ## Objective is to change the owner of non-home paths to root, remove write permissions, and set execute where required
131131
# these files are created on container first exec, by the default user, so we have to create them since default will not have write perm
@@ -149,7 +149,7 @@ RUN touch $STARTUPDIR/wm.log \
149149
&& chown -R root:root /usr/local/bin \
150150
&& rm -Rf /home/kasm-default-profile/.launchpadlib
151151

152-
USER 1000
152+
USER kasm-user
153153

154154
ENTRYPOINT ["/dockerstartup/kasm_default_profile.sh", "/dockerstartup/vnc_startup.sh", "/dockerstartup/kasm_startup.sh"]
155155
CMD ["--wait"]

docker/dockerfile-kasm-ubuntu-jammy-desktop-minimal

-88
This file was deleted.

docker/dockerfile-suave

+136
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
ARG BASE_IMAGE="ghcr.io/kas-lab/kasm-jammy:latest"
2+
FROM $BASE_IMAGE
3+
4+
USER root
5+
6+
# Set the locale
7+
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \
8+
locale-gen
9+
ENV LANG en_US.UTF-8
10+
ENV LANGUAGE en_US:en
11+
ENV LC_ALL en_US.UTF-8
12+
13+
### Envrionment config
14+
ENV DEBIAN_FRONTEND noninteractive
15+
16+
###Add Sudo
17+
RUN add-apt-repository ppa:kisak/kisak-mesa \
18+
&& apt update \
19+
&& apt install -y \
20+
sudo \
21+
tzdata\
22+
vim \
23+
wget \
24+
curl \
25+
lsb-release \
26+
gnupg \
27+
wmctrl \
28+
git \
29+
software-properties-common \
30+
mesa-utils \
31+
bash-completion \
32+
&& apt full-upgrade -y \
33+
&& rm -rf /var/lib/apt/list/
34+
35+
36+
### Install Visual Studio Code
37+
# COPY ./docker/src/ubuntu/install/vs_code $INST_SCRIPTS/vs_code/
38+
# RUN bash $INST_SCRIPTS/vs_code/install_vs_code.sh && rm -rf $INST_SCRIPTS/vs_code/
39+
40+
### Install Gazebo
41+
RUN wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
42+
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
43+
44+
RUN apt update && apt install -y \
45+
gz-garden \
46+
&& rm -rf /var/lib/apt/lists/
47+
48+
### Install ROS2
49+
RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
50+
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null
51+
52+
RUN apt update && apt install -y \
53+
ros-humble-ros-base \
54+
python3-colcon-common-extensions \
55+
python3-rosdep \
56+
python3-vcstool \
57+
&& rm -rf /var/lib/apt/lists/
58+
59+
###Add the USER env var
60+
RUN echo 'kasm-user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
61+
ENV HOME /home/kasm-user
62+
USER kasm-user
63+
ENV DEBIAN_FRONTEND noninteractive
64+
65+
WORKDIR $HOME
66+
67+
# Install ArduSub
68+
RUN git clone https://github.com/ArduPilot/ardupilot.git
69+
WORKDIR $HOME/ardupilot
70+
RUN git checkout 94ba4ece5f9ccdf632b95938f8e644a622f5ee75
71+
RUN git submodule update --init --recursive
72+
RUN rm $HOME/ardupilot/Tools/environment_install/install-prereqs-ubuntu.sh
73+
RUN wget -P $HOME/ardupilot/Tools/environment_install/ https://raw.githubusercontent.com/ArduPilot/ardupilot/c623ae8b82db4d7e195f4b757e2ae5d049f941e5/Tools/environment_install/install-prereqs-ubuntu.sh
74+
RUN chmod +x $HOME/ardupilot/Tools/environment_install/install-prereqs-ubuntu.sh
75+
RUN USER=kasm-user Tools/environment_install/install-prereqs-ubuntu.sh -y
76+
77+
RUN sudo pip3 install -U mavproxy PyYAML
78+
79+
ENV PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH
80+
ENV PATH=$PATH:$HOME/ardupilot/Tools/autotest
81+
ENV PATH=/usr/lib/ccache:$PATH
82+
83+
RUN ["/bin/bash","-c","./waf configure && make sub"]
84+
85+
# install ardupilot gazebo plugin
86+
RUN sudo apt update && sudo apt install -y \
87+
rapidjson-dev \
88+
libgz-sim7-dev \
89+
&& sudo rm -rf /var/lib/apt/list/
90+
91+
WORKDIR $HOME
92+
RUN git clone https://github.com/ArduPilot/ardupilot_gazebo
93+
94+
WORKDIR $HOME/ardupilot_gazebo
95+
RUN [ "/bin/bash","-c","mkdir build && cd build \
96+
&& cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo\
97+
&& make"]
98+
99+
ENV GZ_SIM_SYSTEM_PLUGIN_PATH=$HOME/ardupilot_gazebo/build:${GZ_SIM_SYSTEM_PLUGIN_PATH}
100+
ENV GZ_SIM_RESOURCE_PATH=$HOME/ardupilot_gazebo/models:$HOME/ardupilot_gazebo/worlds:${GZ_SIM_RESOURCE_PATH}
101+
102+
# Copy suave files
103+
ENV GZ_VERSION="garden"
104+
RUN mkdir -p $HOME/suave_ws/src
105+
COPY --chown=kasm-user:kasm-user suave.rosinstall $HOME/suave_ws/suave.rosinstall
106+
WORKDIR $HOME/suave_ws/
107+
RUN vcs import src < suave.rosinstall --recursive
108+
109+
RUN rm -rf $HOME/suave_ws/src/suave/
110+
COPY --chown=kasm-user:kasm-user suave/ $HOME/suave_ws/src/suave/suave/
111+
COPY --chown=kasm-user:kasm-user suave_missions/ $HOME/suave_ws/src/suave/suave_missions/
112+
COPY --chown=kasm-user:kasm-user suave_metacontrol/ $HOME/suave_ws/src/suave/suave_metacontrol/
113+
COPY --chown=kasm-user:kasm-user suave_msgs/ $HOME/suave_ws/src/suave/suave_msgs/
114+
115+
# Install suave deps
116+
WORKDIR $HOME/suave_ws
117+
RUN ["/bin/bash", "-c", "source /opt/ros/humble/setup.bash \
118+
&& sudo rosdep init \
119+
&& rosdep update \
120+
&& rosdep install --from-paths src --ignore-src -r -y"]
121+
122+
RUN ["/bin/bash", "-c", "sudo ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh"]
123+
124+
# Build suave
125+
RUN ["/bin/bash", "-c", "source /opt/ros/humble/setup.bash \
126+
&& colcon build --symlink-install \
127+
&& echo 'source ~/suave_ws/install/setup.bash' >> ~/.bashrc"]
128+
129+
130+
RUN sudo apt autoremove -y && sudo rm -rf /var/lib/apt/lists/
131+
132+
COPY --chown=kasm-user:kasm-user runner/ $HOME/suave_ws/src/suave/runner/
133+
134+
WORKDIR $HOME/suave_ws/src/suave/runner/
135+
136+
CMD ["--tail-log"]

0 commit comments

Comments
 (0)