Creating a cusotm ros package in dockerfile

Hello, This reply may be irrelevant, bu I am new on using this docker platform. Also, i wanted to create a custom package test_package which publishes the topic named /talker contains the info of std_msgs:String. This below is the docker file i created for the above all happen, when i execute the docker run -it command.

FROM osrf/ros:noetic-desktop-full

RUN apt-get update \
    && apt-get install -y \
    nano \
    tree \
    && rm -rf /var/lib/apt/lists/*
             
WORKDIR /catkin_ws/src 

RUN /bin/bash -c "source /opt/ros/noetic/setup.bash \
                && catkin_create_pkg test_package std_msgs roscpp rospy"

COPY test_package/src/talker.cpp /catkin_ws/src/test_package/src/talker.cpp

WORKDIR /catkin_ws
RUN /bin/bash -c "source /opt/ros/noetic/setup.bash \
                  && catkin_make"
RUN echo "source /catkin_ws/devel/setup.bash" >> /root/.bashrc

CMD ["bash", "-c", "source /opt/ros/noetic/setup.bash \
                    && roscore & sleep 1 \
                    && source /catkin_ws/devel/setup.bash \
                    && rosrun test_package talker"]

and the error showing is

...........
started core service [/rosout]
[rosrun] Couldn't find executable named talker below /catkin_ws/src/test_package

I know that we have to modify the CMakelists.txt file to run the rosnode like add_executable, target_link_libraries and one other which is runtime destination after created the talker.cpp file under the src directory in the package. To do that i have to write the command in the dockerfile. I don’t know how to add that here. If someone help me out in this, it would be so helpful for me. Thanks in Advance.

You can probably test the process (most commands) manually by running:

docker run -it osrf/ros:noetic-desktop-full sh