# syntax=docker/dockerfile:1.3 FROM ros:jazzy-ros-core # Build argument provided by buildx/BuildKit: `TARGETARCH` (amd64, arm64, etc.). # Default to amd64 when not provided. ARG TARGETARCH=amd64 ARG GRAPICAL_ENV=TRUE # Copy both architecture-specific packages into the image and choose the right one at build time COPY pkgs/exwayz_3d_mapping-1.2.2-linux-u24.04-amd64.deb /tmp/exwayz_amd64.deb COPY pkgs/exwayz_3d_mapping-1.2.2-linux-u24.04-aarch64.deb /tmp/exwayz_aarch64.deb # Install dependencies and setup for GUI applications ENV DISPLAY=:0 ENV WAYLAND_DISPLAY=wayland-0 ENV XDG_SESSION_TYPE=x11 ENV XDG_RUNTIME_DIR=/mnt/wslg/runtime-dir #If debug, install the following: RUN if [ "$GRAPHICAL_ENV" = "TRUE" ]; then \ apt update && apt install -y libgl1-mesa-dev libosmesa6-dev libglew-dev libgles2-mesa-dev libglfw3-dev libstdc++6 mesa-utils; \ fi #TODO we're installing unneccessary things like the humanity-icons package, clean this up later. # RUN --mount=type=secret,id=exwayz_license set -eux; \ # if [ "${TARGETARCH}" = "aarch64" ]; then \ # pkg=/tmp/exwayz_aarch64.deb; \ # else \ # pkg=/tmp/exwayz_amd64.deb; \ # fi; \ # apt-get update; \ # apt-get install -fy "$pkg"; \ # if [ -s /run/secrets/exwayz_license ]; then \ # exwayz_license --query "$(cat /run/secrets/exwayz_license)" || true; \ # fi; \ # rm -f /tmp/exwayz_amd64.deb /tmp/exwayz_aarch64.deb; \ # rm -rf /var/lib/apt/lists/* COPY licenses/exwayz_liscence.lic /tmp/exwayz_license RUN set -eux; \ apt-get update; \ apt-get install -fy /tmp/exwayz_amd64.deb; \ if [ -f /tmp/exwayz_license ]; then \ exwayz_license --query "$(cat /tmp/exwayz_license)" || true; \ else \ echo "No license file provided"; \ exit 1; \ fi; \ rm -f /tmp/exwayz_amd64.deb /tmp/exwayz_aarch64.deb; \ rm -f /tmp/exwayz_license; \ rm -rf /var/lib/apt/lists/* # # Change the working directory to /app # WORKDIR /app # Set entrypoint ENTRYPOINT ["/ros_entrypoint.sh"]