Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Dockerfile can't be build if I add personal micro-ros subscriber to micro-ROS-demos

Ouverte
#74 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
c, docker
Domaine
devops, embedded-iot

Piste de recherche

Commencez par reproduire le Dockerfile fourni et retracez le workspace chargé autour des points d’entrée create_firmware_ws.sh et build_firmware.sh de micro_ros_setup. Vérifiez si l’image peut conserver le workspace construit et y accéder après chaque étape Docker RUN ; le travail est terminé lorsque l’image se construit correctement avec le subscriber personnalisé et peut l’exécuter depuis la configuration Docker Compose.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Issue template

  • Hardware description: Ubuntu 22.04
  • RTOS:
  • Installation type: micro_ros_setup
  • Version or commit hash: humble
Steps to reproduce the issue

Hey, my goal is to create a Docker container where everything is set up, and I can directly execute my own subscriber from a docker compose file and don't have to run commands in the terminal.
My plan was to copy my publisher after I ran ros2 run micro_ros_setup create_firmware_ws.sh host into the workspace but afterwords when I run ros2 run micro_ros_setup build_firmware.sh it throws an error because micro_ros_setup can no longer be found ( I think this is because they are in different layers of the image and not have access to each other).

Any ideas how I can solve my issues?

# Download base image ubuntu 22.04
FROM ubuntu:22.04

# LABEL about the custom image
LABEL maintainer="cornelius.welling@gmail.com"
LABEL version="1.0"
LABEL description="This is a ROS2_pub_sub Docker Image"

# Define build arguments
ARG TIME_ZONE
ARG DEBIAN_FRONTEND=noninteractive
ARG ROS_DISTRO=humble
#ARG DEBIAN_FRONTEND=noninteractive -> no user input needed when building

# Install dependencies
RUN apt-get update && \
    apt-get install -y locales\
    curl\
    locales\
    python3-pip\
 && rm -rf /var/lib/apt/lists/*

# Generate and set locales
RUN locale-gen en_US en_US.UTF-8 && \
    update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

# Set environment variables
ENV TZ=Europe/Berlin
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
ENV ROS_VERSION=2
ENV ROS_DISTRO=humble
ENV ROS_PYTHON_VERSION=3
ENV RCUTILS_CONSOLE_OUTPUT_FORMAT="[{severity} {time}]: {message}"

# Add, install and source ROS2 humble
RUN apt-get update && apt-get install -y software-properties-common curl && \
    add-apt-repository universe

RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg && \
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null

# Install bootstrap tools
RUN apt-get update && apt-get install --no-install-recommends -y \
    nano \
    iputils-ping \
    wget \
    python3-colcon-common-extensions \
    python3-colcon-mixin \
    python3-rosdep \
    python3-vcstool \
    git \
    && rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get upgrade -y &&\
    apt-get install -y ros-humble-desktop\
    && rm -rf /var/lib/apt/lists/*

# Install cyclonedds
RUN apt-get update && apt-get install -y ros-humble-rmw-cyclonedds-cpp && rm -rf /var/lib/apt/lists/*

# Set the RMW_IMPLEMENTATION environment variable
ENV RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

RUN bash -c "source /opt/ros/humble/setup.bash"

RUN mkdir /microros_ws
WORKDIR /microros_ws
RUN git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup



# bootstrap rosdep
RUN rosdep init && \
  rosdep update --rosdistro humble	
RUN apt update && rosdep update
RUN rosdep install -i --from-path src --rosdistro humble -y


**# After setting up micro-ROS and running the first build:
RUN bash -c "source /opt/ros/humble/setup.bash && \
            colcon build && \
            source install/local_setup.bash && \
            ros2 run micro_ros_setup create_firmware_ws.sh host"

# Add your new application
COPY ./MICROROS_SUBPUB/main.c /microros_ws/src/uros/micro-ROS-demos/rclc/MICROROS_SUBPUB/main.c
COPY ./MICROROS_SUBPUB/CMakeLists.txt /microros_ws/src/uros/micro-ROS-demos/rclc/MICROROS_SUBPUB/CMakeLists.txt

# Update the main CMakeLists.txt to add your new executable
RUN echo 'export_executable(MICROROS_SUBPUB)' >> /microros_ws/src/uros/micro-ROS-demos/rclc/CMakeLists.txt

# Continue with your build
RUN bash -c "source /opt/ros/humble/setup.bash && \
	    source install/local_setup.bash && \
            ros2 run micro_ros_setup build_firmware.sh && \
            source install/local_setup.bash && \
            ros2 run micro_ros_setup create_agent_ws.sh && \
            ros2 run micro_ros_setup build_agent.sh && \
            source install/local_setup.bash"**


# Environment setup
#RUN echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
RUN echo '#!/usr/bin/env bash' > /ros_entrypoint.sh
RUN echo 'source /opt/ros/humble/setup.bash' >> /ros_entrypoint.sh
RUN echo 'source /microros_ws/install/local_setup.bash' >> /ros_entrypoint.sh



# Finalize entrypoint script
RUN echo 'exec "$@"' >> /ros_entrypoint.sh
RUN chmod +x /ros_entrypoint.sh

ENTRYPOINT ["/ros_entrypoint.sh"]

# Run command
CMD ["bash"]
Expected behavior
Actual behavior
Additional information
Langage dominant
C
Étoiles
101
Forks
35
Merge moyen
4 j 16 h
PR mergées (30 j)
3

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de micro-ROS/micro-ROS-demos

Toutes les issues de micro-ROS/micro-ROS-demos

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.