diff --git a/Dockerfile b/Dockerfile index 8d2aa84..a8faf4c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,13 +17,12 @@ RUN cd Livox-SDK2 && mkdir -p build && cd build && cmake .. && make -j4 && make WORKDIR /colcon_ws COPY livox_ros_driver2 src/livox_ros_driver2 -RUN cp src/livox_ros_driver2/package_ROS2.xml src/livox_ros_driver2/package.xml && \ - . /opt/ros/${ROS_DISTRO}/setup.sh && \ +RUN . /opt/ros/${ROS_DISTRO}/setup.sh && \ colcon build --symlink-install --cmake-args -DROS_EDITION=${ROS_DISTRO} -DHUMBLE_ROS=${ROS_DISTRO} -DCMAKE_BUILD_TYPE=Release --event-handlers console_direct+ ENV LAUNCH_COMMAND='ros2 launch livox_ros_driver2 msg_MID360_launch.py' # Create build and run aliases -RUN echo 'alias build="colcon build --symlink-install --event-handlers console_direct+"' >> /etc/bash.bashrc && \ - echo 'alias run="su - ros /run.sh"' >> /etc/bash.bashrc && \ - echo "source /colcon_ws/install/setup.bash; $LAUNCH_COMMAND" >> /run.sh && chmod +x /run.sh +RUN echo 'alias build="colcon build --symlink-install --cmake-args -DROS_EDITION=${ROS_DISTRO} -DHUMBLE_ROS=${ROS_DISTRO} -DCMAKE_BUILD_TYPE=Release --event-handlers console_direct+ "' >> /etc/bash.bashrc && \ + echo 'alias run="su - ros --whitelist-environment=\"ROS_DOMAIN_ID\" /run.sh"' >> /etc/bash.bashrc && \ + echo "source /colcon_ws/install/setup.bash; echo UID: $UID; echo ROS_DOMAIN_ID: $ROS_DOMAIN_ID; $LAUNCH_COMMAND" >> /run.sh && chmod +x /run.sh diff --git a/build.sh b/build.sh index 028fcb4..4cbd886 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,7 @@ #!/bin/bash -REPOSITORY_NAME="$(basename "$(dirname -- "$( readlink -f -- "$0"; )")")" +export BUILDKIT_PROGRESS=plain -docker build --progress=plain -t ghcr.io/rosblox/${REPOSITORY_NAME}:humble . \ No newline at end of file +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +docker compose -f $SCRIPT_DIR/docker-compose.yml build \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..23c67d2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +services: + ros-livox-ros-driver2: + image: ghcr.io/rosblox/ros-livox-ros-driver2:humble + build: + context: . + dockerfile: Dockerfile + restart: always + network_mode: "host" + privileged: true + ipc: host + pid: host + environment: + - UID=${HOST_UID} + - ROS_DOMAIN_ID + command: su - ros --whitelist-environment=ROS_DOMAIN_ID /run.sh diff --git a/livox_ros_driver2 b/livox_ros_driver2 index cd256b7..29c0bd3 160000 --- a/livox_ros_driver2 +++ b/livox_ros_driver2 @@ -1 +1 @@ -Subproject commit cd256b76787d34b60cdd004cd5ac8bdd889768a5 +Subproject commit 29c0bd33058b5fe58cb10cd2fc5eecf844aac8de diff --git a/ros_entrypoint.sh b/ros_entrypoint.sh index 7cbc060..b6e69bf 100755 --- a/ros_entrypoint.sh +++ b/ros_entrypoint.sh @@ -1,9 +1,9 @@ #!/bin/bash set -e -id -u ros &>/dev/null || adduser --quiet --disabled-password --gecos '' --uid ${UID:=1000} --uid ${GID:=1000} ros +id -u ros &>/dev/null || adduser --quiet --disabled-password --gecos '' --uid ${UID:=1000} ros -source "/opt/ros/$ROS_DISTRO/setup.bash" -source /colcon_ws/install/setup.bash +source /opt/ros/${ROS_DISTRO}/setup.bash +source /colcon_ws/install/setup.bash || true -exec "$@" \ No newline at end of file +exec "$@" diff --git a/run.sh b/run.sh index c9ad2f9..6c7337c 100755 --- a/run.sh +++ b/run.sh @@ -1,13 +1,10 @@ #!/bin/bash -REPOSITORY_NAME="$(basename "$(dirname -- "$( readlink -f -- "$0"; )")")" +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -docker run -it --rm \ ---network=host \ ---ipc=host \ ---pid=host \ ---env UID=$(id -u) \ ---env GID=$(id -g) \ +export HOST_UID=$(id -u) + +docker compose -f $SCRIPT_DIR/docker-compose.yml run \ --volume $(pwd)/livox_ros_driver2:/colcon_ws/src/livox_ros_driver2 \ --volume $(pwd)/Livox-SDK2:/Livox-SDK2 \ -ghcr.io/rosblox/${REPOSITORY_NAME}:humble +ros-livox-ros-driver2 bash