Example
$ docker-compose up
$ rocker --nvidia --x11 --network=host osrf/ros:melodic-desktop-full rviz
version: "3" | |
services: | |
realsense_ros: | |
build: ./ | |
network_mode: "host" | |
privileged: true | |
command: ["roslaunch", "realsense2_camera", "rs_camera.launch"] |
ARG FROM_IMAGE=ros:melodic | |
# multi-stage for caching | |
FROM $FROM_IMAGE AS cache | |
# install bootstrap tools | |
RUN apt-get update && apt-get install --no-install-recommends -y \ | |
python3-vcstool \ | |
&& rm -rf /var/lib/apt/lists/* | |
# copy overlay source | |
ENV OVERLAY_WS /opt/overlay_ws | |
RUN mkdir -p $OVERLAY_WS/src | |
WORKDIR $OVERLAY_WS | |
COPY ./realsense.repos ./ | |
RUN vcs import src < realsense.repos | |
# copy manifests for caching | |
WORKDIR /opt | |
RUN find ./ -name "package.xml" | \ | |
xargs cp --parents -t /tmp | |
# && find ./ -name "COLCON_IGNORE" | \ | |
# xargs cp --parents -t /tmp | |
# multi-stage for building | |
FROM $FROM_IMAGE AS build | |
# install bootstrap tools | |
RUN apt-get update && apt-get install --no-install-recommends -y \ | |
git \ | |
python3-colcon-common-extensions \ | |
python3-colcon-mixin \ | |
python3-vcstool \ | |
&& rm -rf /var/lib/apt/lists/* | |
# setup colcon mixin and metadata | |
RUN colcon mixin add default \ | |
https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml && \ | |
colcon mixin update && \ | |
colcon metadata add default \ | |
https://raw.githubusercontent.com/colcon/colcon-metadata-repository/master/index.yaml && \ | |
colcon metadata update | |
# setup keys | |
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6F3EFCDE | |
# setup sources.list | |
RUN echo "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" > /etc/apt/sources.list.d/realsense-public.list | |
# install realsense sdk dependencies | |
RUN apt-get update && apt-get install -y \ | |
librealsense2-dbg \ | |
librealsense2-dev \ | |
librealsense2-dkms \ | |
librealsense2-utils \ | |
&& rm -rf /var/lib/apt/lists/* | |
# install CI dependencies | |
RUN apt-get update && apt-get install -q -y \ | |
ccache \ | |
lcov \ | |
&& rm -rf /var/lib/apt/lists/* | |
# copy overlay manifests | |
ENV OVERLAY_WS /opt/overlay_ws | |
COPY --from=cache /tmp/overlay_ws $OVERLAY_WS | |
WORKDIR $OVERLAY_WS | |
# install overlay dependencies | |
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ | |
apt-get update && rosdep install -q -y \ | |
--from-paths \ | |
src \ | |
--ignore-src \ | |
&& rm -rf /var/lib/apt/lists/* | |
# copy overlay source | |
COPY --from=cache $OVERLAY_WS ./ | |
# build overlay source | |
ARG OVERLAY_MIXINS="release ccache" | |
RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ | |
colcon build \ | |
--symlink-install \ | |
--mixin $OVERLAY_MIXINS | |
# --event-handlers console_direct+ | |
# source overlay from entrypoint | |
RUN sed --in-place \ | |
's|^source .*|source "$OVERLAY_WS/install/setup.bash"|' \ | |
/ros_entrypoint.sh |
repositories: | |
IntelRealSense/realsense-ros: | |
type: git | |
url: https://github.com/IntelRealSense/realsense-ros.git | |
version: development |