diff --git a/dockerfiles/devenv.Dockerfile b/dockerfiles/devenv.Dockerfile index 5725f4453044148b7f3745c863a06509e97d66e0..38944e712bd87013a2e4532516ee440166d30109 100644 --- a/dockerfiles/devenv.Dockerfile +++ b/dockerfiles/devenv.Dockerfile @@ -1,7 +1,8 @@ ARG ROS_DISTRO - FROM osrf/ros:${ROS_DISTRO}-desktop-full -RUN echo "Building devenv for ROS" $ROS_DISTRO + +ARG SHELL +RUN echo "Building devenv for ROS" $ROS_DISTRO "with shell" $SHELL # Avoid warnings by switching to noninteractive ENV DEBIAN_FRONTEND=noninteractive @@ -45,21 +46,27 @@ RUN apt-get update && \ openssh-client \ trash-cli \ valgrind \ - xterm \ - wget \ - zsh + wget -# ZSH tools based on ubuntu version +RUN if [ "$SHELL" = "zsh" ]; \ + then \ + apt-get -y install zsh; \ + fi + +# Install extra libs from .deb files WORKDIR /tmp/srcs/ COPY /extra_libs/* ./ -RUN if [ "${ROS_DISTRO}" = "melodic" ]; \ +# Enviroment tools based on ubuntu version +RUN if [ -f "common_libs.txt" ]; \ then \ - dpkg -i *.deb; \ - else \ - dpkg -i bat*.deb; \ - dpkg -i lsd*.deb; \ - dpkg -i ripgrep*.deb; \ + grep -v '^#' common_libs.txt | xargs dpkg -i ;\ + fi + +# Extra libs, e.g. vtk-7.1_20221201-1_amd64.deb +RUN if [ -f "${ROS_DISTRO}_libs.txt" ]; \ + then \ + grep -v '^#' ${ROS_DISTRO}_libs.txt | xargs dpkg -i ;\ fi RUN rm -rf * @@ -151,11 +158,14 @@ RUN apt-get update \ COPY ./ros_entrypoint.sh / RUN chmod a+x /ros_entrypoint.sh -ENTRYPOINT ["/ros_entrypoint.sh"] -CMD ["zsh"] ENV ROS_DISTRO "${ROS_DISTRO}" -ENV SHELL /usr/bin/zsh +ENV SHELL "${SHELL}" ENV RUNNING_IN_DOCKER true +# SHELL ["/bin/${SHELL}"] + # Switch back to dialog for any ad-hoc use of apt-get ENV DEBIAN_FRONTEND= + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD /usr/bin/$SHELL \ No newline at end of file diff --git a/dockerfiles/extra_libs/common_libs.txt b/dockerfiles/extra_libs/common_libs.txt new file mode 100644 index 0000000000000000000000000000000000000000..70c87b04839a3f4d494bcbc04f76e0211772880f --- /dev/null +++ b/dockerfiles/extra_libs/common_libs.txt @@ -0,0 +1,4 @@ +# List with the additional libraries to install in devenv image +bat-musl_0.24.0_amd64.deb +lsd-musl_1.0.0_amd64.deb +ripgrep_13.0.0_amd64.deb \ No newline at end of file diff --git a/dockerfiles/extra_libs/melodic_libs.txt b/dockerfiles/extra_libs/melodic_libs.txt new file mode 100644 index 0000000000000000000000000000000000000000..7e013609f01d2b2f23d14104d23eb89717c41ad7 --- /dev/null +++ b/dockerfiles/extra_libs/melodic_libs.txt @@ -0,0 +1,3 @@ +# Lits of the particualr libs to install in melodic docker image +pcl-1.9.1_20221201-1_amd64.deb +vtk-7.1_20221201-1_amd64.deb \ No newline at end of file diff --git a/dockerfiles/builder.Dockerfile b/dockerfiles/other/builder.Dockerfile similarity index 100% rename from dockerfiles/builder.Dockerfile rename to dockerfiles/other/builder.Dockerfile diff --git a/dockerfiles/id_rsa_TecnaliaUB20 b/dockerfiles/other/id_rsa_TecnaliaUB20 similarity index 100% rename from dockerfiles/id_rsa_TecnaliaUB20 rename to dockerfiles/other/id_rsa_TecnaliaUB20 diff --git a/dockerfiles/old_devenv.Dockerfile b/dockerfiles/other/old_devenv.Dockerfile similarity index 100% rename from dockerfiles/old_devenv.Dockerfile rename to dockerfiles/other/old_devenv.Dockerfile diff --git a/dotfiles/docker.sh b/dotfiles/docker.sh index 5822deb8ccc06899cf40cd0e1d4f31f3667b1f1a..29feba47877c6ea5ebd51c485ab96e00f63c28a8 100644 --- a/dotfiles/docker.sh +++ b/dotfiles/docker.sh @@ -1,4 +1,6 @@ # docker common commands +export dockerfiles_DIR=~/srcs/development_environment/dockerfiles; + alias dim="docker images" alias dpsa="docker ps -a" alias dps="docker ps" @@ -10,8 +12,26 @@ alias dimp="docker image prune" # Build docker image # usage: dockbuild {noetic, melodic} function dockbuild(){ - cd ~/srcs/development_environment/dockerfiles; - docker build -t devenv:$1 --build-arg ROS_DISTRO=$1 -f devenv.Dockerfile . + if [ $# -lt 1 ]; then + echo "Usage: dockbuild <ROS_DISTRO> [build_args]" + echo "build_args:" + echo " SHELL - zsh (default) or bash" + return 1 + fi + + cd $dockerfiles_DIR; + + if [ $# -lt 2 ]; then + echo "Building ROS_DISTRO:"$1 "with SHELL_VERISON: zsh" + docker build -t devenv:$1 --build-arg ROS_DISTRO=$1 --build-arg SHELL="zsh" -f devenv.Dockerfile . + else + if [ $2 = "bash" ]; then + echo "Building ROS_DISTRO:"$1 "with SHELL_VERISON:"$2 + docker build -t devenv:$1 --build-arg ROS_DISTRO=$1 --build-arg SHELL=$2 -f devenv.Dockerfile . + else + echo "SHELL_VERISON:"$2 "not supported" + fi + fi } # Run container with rocker