From b449d44c4ca5757c748eb93df9c397e3ad81af45 Mon Sep 17 00:00:00 2001 From: Andres Montano <andres.montano@tecnalia.com> Date: Thu, 19 Oct 2023 14:09:46 +0200 Subject: [PATCH] Add SHELL options and extra libs from txt file --- dockerfiles/devenv.Dockerfile | 40 ++++++++++++------- dockerfiles/extra_libs/common_libs.txt | 4 ++ dockerfiles/extra_libs/melodic_libs.txt | 3 ++ dockerfiles/{ => other}/builder.Dockerfile | 0 dockerfiles/{ => other}/id_rsa_TecnaliaUB20 | 0 dockerfiles/{ => other}/old_devenv.Dockerfile | 0 dotfiles/docker.sh | 24 ++++++++++- 7 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 dockerfiles/extra_libs/common_libs.txt create mode 100644 dockerfiles/extra_libs/melodic_libs.txt rename dockerfiles/{ => other}/builder.Dockerfile (100%) rename dockerfiles/{ => other}/id_rsa_TecnaliaUB20 (100%) rename dockerfiles/{ => other}/old_devenv.Dockerfile (100%) diff --git a/dockerfiles/devenv.Dockerfile b/dockerfiles/devenv.Dockerfile index 5725f44..38944e7 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 0000000..70c87b0 --- /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 0000000..7e01360 --- /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 5822deb..29feba4 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 -- GitLab