30 lines
1.5 KiB
Docker
30 lines
1.5 KiB
Docker
# Pudu Map GUI — fully dockerized. ONE image carries everything the GUI does:
|
|
# web server + converter/editor backend (pillow/numpy/pyyaml)
|
|
# goal sending (roslibpy -> robot rosbridge)
|
|
# local /map publisher + RViz preview (ROS Jazzy + rviz2, X11 passthrough)
|
|
# robot deploys (openssh-client/scp), ping, native file picker (zenity/tk)
|
|
# Run with host network + X11 + the host paths mounted VERBATIM (see run_docker.sh)
|
|
# so all absolute paths inside the code resolve identically in and out of docker.
|
|
FROM ros:jazzy
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ros-jazzy-rviz2 \
|
|
python3-pil python3-numpy python3-yaml python3-pip \
|
|
python3-tk zenity \
|
|
openssh-client rsync iputils-ping psmisc \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# roslibpy is not packaged in apt; 24.04 needs the PEP-668 override. cryptography
|
|
# is PINNED to the deb version — pip can't uninstall debian packages (no RECORD)
|
|
# and the TLS extra chain would otherwise try to upgrade it.
|
|
RUN pip3 install --no-cache-dir --break-system-packages "cryptography==41.0.7" roslibpy
|
|
|
|
# The GUI itself is volume-mounted (workstation-canonical, live-editable) — the
|
|
# image only guarantees the runtime. Fallback copy so the image also runs alone.
|
|
COPY pudu_gui.py index.html local_map_pub.py /opt/pudu_map_gui/
|
|
|
|
# rviz/relay launches source /opt/ros/jazzy/setup.bash themselves (ENV_CLEAN)
|
|
ENTRYPOINT ["/bin/bash", "-lc"]
|
|
CMD ["source /opt/ros/jazzy/setup.bash && python3 ${PUDU_GUI_DIR:-/opt/pudu_map_gui}/pudu_gui.py"]
|