ARG from=ros:noetic FROM ${from} RUN apt-get update && apt-get install -y python3-pip git ca-certificates RUN apt-get update && apt-get install -y libsdl2-dev libusb-1.0-0-dev build-essential cmake && apt-get install -y openssh-server iputils-ping net-tools sudo nano ros-noetic-cv-bridge v4l-utils RUN pip3 install git+https://github.com/catkin/catkin_tools.git RUN pip install opencv-python RUN echo "freshenst" # clone ros package repo ENV ROS_WS /opt/ros_ws RUN mkdir -p $ROS_WS/src WORKDIR $ROS_WS RUN git -C src clone https://git.caslab.ece.vt.edu/hlarkin3/base-station-ros/ WORKDIR $ROS_WS/src/base-station-ros RUN git submodule init && git submodule update WORKDIR $ROS_WS # install ros package dependencies RUN apt-get update && \ rosdep update && \ rosdep install -y --from-paths src/* --ignore-src && \ rm -rf /var/lib/apt/lists/* # build ros package source RUN catkin config \ --extend /opt/ros/$ROS_DISTRO && \ catkin build --cmake-args -DCMAKE_CXX_FLAGS="-std=c++17" COPY ros_entrypoint.sh /usr/local/bin/ros_entrypoint.sh RUN useradd -m -s /bin/bash -p $(openssl passwd -1 password) ssher RUN usermod -aG sudo ssher # add ssher user to the video group to allow streaming RUN adduser ssher video RUN usermod -a -G video ssher RUN chmod 755 /usr/local/bin/ros_entrypoint.sh # make ssh-ing easier RUN echo "source /opt/ros/noetic/setup.bash" >> /home/ssher/.bashrc RUN echo "source /opt/ros_ws/devel/setup.bash" >> /home/ssher/.bashrc RUN echo "ssh-keyscan -H service-master >> /home/ssher/.ssh/known_hosts" >> /home/ssher/.bashrc RUN echo "ssh-keyscan -H service-drone >> /home/ssher/.ssh/known_hosts" >> /home/ssher/.bashrc # just doing this with hosts file now # put rsa key in image RUN mkdir -p /home/ssher/.ssh RUN chown -R ssher:ssher /home/ssher/.ssh RUN service ssh start EXPOSE 22 ENTRYPOINT ["/usr/local/bin/ros_entrypoint.sh"] CMD ["/usr/sbin/sshd","-D"] CMD ["bash"] # run ros package launch file # CMD ["roslaunch", "roscpp_tutorials", "talker_listener.launch"]