59 lines
1.8 KiB
Docker
59 lines
1.8 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
ENV PIP_BREAK_SYSTEM_PACKAGES=1 \
|
|
SHELL=/bin/bash
|
|
|
|
ARG USERNAME=ft_analytics
|
|
ARG USER_UID=1000
|
|
ARG USER_GID=${USER_UID}
|
|
|
|
RUN if id -u "${USER_UID}" >/dev/null 2>&1; then \
|
|
userdel "$(id -un "${USER_UID}")"; \
|
|
fi \
|
|
&& groupadd --gid "${USER_GID}" "${USERNAME}" \
|
|
&& useradd --uid "${USER_UID}" --gid "${USER_GID}" -m "${USERNAME}" \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends sudo \
|
|
&& echo "${USERNAME} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${USERNAME} \
|
|
&& chmod 0440 /etc/sudoers.d/${USERNAME}
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends curl gnupg lsb-release ca-certificates
|
|
|
|
RUN echo "deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list \
|
|
&& curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
ros-jazzy-ros-core \
|
|
python3-colcon-common-extensions \
|
|
python3-pip \
|
|
nano \
|
|
iproute2 \
|
|
can-utils \
|
|
python3-rosdep \
|
|
build-essential \
|
|
cmake \
|
|
kmod \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN pip3 install --no-cache-dir --upgrade --break-system-package \
|
|
python-can cantools
|
|
|
|
RUN echo "source /opt/ros/jazzy/setup.bash" >> /home/${USERNAME}/.bashrc \
|
|
&& echo "source /workspaces/ft_analytics/install/setup.bash" >> /home/${USERNAME}/.bashrc
|
|
|
|
WORKDIR /workspaces/ft_analytics
|
|
|
|
RUN mkdir -p /workspaces/ft_analytics/ros2_ws/src
|
|
|
|
COPY --chown=${USERNAME}:${USERNAME} ros2_ws/src ros2_ws/src
|
|
|
|
RUN rosdep init \
|
|
&& apt-get update \
|
|
&& rosdep update \
|
|
&& rosdep install -r --rosdistro jazzy --from-paths ros2_ws/src --ignore-src -y
|
|
|
|
USER ${USERNAME}
|
|
CMD ["/bin/bash"]
|