-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
71 lines (62 loc) · 3 KB
/
Copy pathDockerfile
File metadata and controls
71 lines (62 loc) · 3 KB
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
# Sensor Diagnostics Demo
FROM ros:jazzy-ros-base
ENV DEBIAN_FRONTEND=noninteractive
ENV ROS_DISTRO=jazzy
ENV COLCON_WS=/root/demo_ws
# Install minimal dependencies (no Gazebo, no simulation packages)
RUN apt-get update && apt-get install -y \
ros-jazzy-ament-lint-auto \
ros-jazzy-ament-lint-common \
ros-jazzy-ament-cmake-gtest \
ros-jazzy-yaml-cpp-vendor \
ros-jazzy-example-interfaces \
python3-colcon-common-extensions \
python3-requests \
nlohmann-json3-dev \
libcpp-httplib-dev \
libsystemd-dev \
sqlite3 \
libsqlite3-dev \
git \
curl \
jq \
&& rm -rf /var/lib/apt/lists/*
# Clone ros2_medkit from GitHub (gateway + dependencies + plugins)
ARG ROS2_MEDKIT_REF=main
WORKDIR ${COLCON_WS}/src
RUN git clone --depth 1 --branch ${ROS2_MEDKIT_REF} https://github.com/selfpatch/ros2_medkit.git && \
mv ros2_medkit/src/ros2_medkit_cmake . && \
mv ros2_medkit/src/ros2_medkit_gateway . && \
mv ros2_medkit/src/ros2_medkit_serialization . && \
mv ros2_medkit/src/ros2_medkit_msgs . && \
mv ros2_medkit/src/ros2_medkit_fault_manager . && \
mv ros2_medkit/src/ros2_medkit_fault_reporter . && \
mv ros2_medkit/src/ros2_medkit_diagnostic_bridge . && \
mv ros2_medkit/src/ros2_medkit_plugins/ros2_medkit_graph_provider . && \
mv ros2_medkit/src/ros2_medkit_discovery_plugins/ros2_medkit_beacon_common . && \
mv ros2_medkit/src/ros2_medkit_discovery_plugins/ros2_medkit_topic_beacon . && \
mv ros2_medkit/src/ros2_medkit_discovery_plugins/ros2_medkit_param_beacon . && \
mv ros2_medkit/src/ros2_medkit_discovery_plugins/ros2_medkit_linux_introspection . && \
rm -rf ros2_medkit
# Copy demo package
COPY package.xml CMakeLists.txt ${COLCON_WS}/src/sensor_diagnostics_demo/
COPY src/ ${COLCON_WS}/src/sensor_diagnostics_demo/src/
COPY config/ ${COLCON_WS}/src/sensor_diagnostics_demo/config/
COPY launch/ ${COLCON_WS}/src/sensor_diagnostics_demo/launch/
# TODO(#49): Move to manifest-defined scripts once ros2_medkit#303 lands
COPY container_scripts/ /var/lib/ros2_medkit/scripts/
RUN find /var/lib/ros2_medkit/scripts -name "*.bash" -exec chmod +x {} \;
# Build all packages (skip test dependencies that aren't in ros-base)
WORKDIR ${COLCON_WS}
RUN bash -c "source /opt/ros/jazzy/setup.bash && \
rosdep update && \
rosdep install --from-paths src --ignore-src -r -y \
--skip-keys='ament_cmake_clang_format ament_cmake_clang_tidy test_msgs example_interfaces sqlite3' && \
MAKEFLAGS='-j 2' colcon build --executor sequential --symlink-install --cmake-args -DBUILD_TESTING=OFF"
# Setup environment
RUN echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc && \
echo "source ${COLCON_WS}/install/setup.bash" >> ~/.bashrc
# Expose gateway port
EXPOSE 8080
# Default command: create storage dirs (volume mount hides build-time mkdir) and launch
CMD ["bash", "-c", "mkdir -p /var/lib/ros2_medkit/rosbags && source /opt/ros/jazzy/setup.bash && source /root/demo_ws/install/setup.bash && ros2 launch sensor_diagnostics_demo demo.launch.py"]