Docker Containers - LCAS/spot_platform GitHub Wiki
In this repository (spot_platform
) we have the file configs/docker-compose.yaml
which spawn three services. This article will explain what they are, and how they function internally, the aim is for you to understand how it is created and deployed in further detail.
This is a diagram that describes how the stack is composed. The bolder outlined boxes under spot_platform
are managed by the L-CAS team and are hosted on the L-CAS Docker Registry.
spot_drivers
L-CAS has created this container to include all the specific ROS drivers and packages (e.g. simulation, control, libraries, and Code Server) that we want to use for the Spot robot platform, we define the configuration in this repositories Dockerfile
.
We build the spot_drivers
container using the docker-build.yml
action and publish it with the following image tag:
lcas.lincoln.ac.uk/lcas/spot_platform:main
We base this image on top of the lcas/ros:jammy-humble
image that is built inside the lcas/ros-docker-images repository, this takes a "base image" and then installs the L-CAS rosdistro apt repositories on top and installs the desktop environment (xfce and novnc).
The base image in our case is ros:humble
, this is published onto Docker Hub by ROS themselves, this takes the ros:humble-ros-core-jammy
container and install some extra dependencies to make it a full installation.
ros:humble-ros-core-jammy
takes ubuntu:jammy
and installs the base ROS 2 Humble environment.
ubuntu:jammy
is an official image and is made FROM scratch
, meaning that all it does is add the files needed to make the base Linux container into an Ubuntu container.
filebrowser
This is a web-based filebrowser that opens up the /home/spot
folder natively on the NUC to a web interface exposed on port 8080.
This is useful for downloading data such as bag files.
We are using the docker image filebrowser/filebrowser
which installs the application onto alpine
zenoh-bridge-ros2dds
This is a zenoh router endpoint to access the ROS topics over the network using zenoh, more about this later.
We are using the docker image eclipse/zenoh-bridge-ros2dds:latest
which is built by the Eclipse Zenoh team, using their "publish crates" CI action, that is called from the zenoh-plugin-ros2dds
using the release crates CI workflow which takes the built 'crate' (Rust Lingo) and then pipes it directly into a Docker image.