diff --git a/conan-el7-gcc114/Dockerfile b/conan-el7-gcc114/Dockerfile index bad5d518edf221a6e88f6a595d53bdfa9baf8085..5088318862a169f493310e7ab2f5337adc69ce4f 100644 --- a/conan-el7-gcc114/Dockerfile +++ b/conan-el7-gcc114/Dockerfile @@ -1,19 +1,13 @@ -FROM centos:7 +FROM gitlab-registry.synchrotron-soleil.fr/software-control-system/containers/dev-docker-tools/dev-el7-gcc48 LABEL maintainer="Patrick Madela <patrick.madela@synchrotron-soleil.fr" -ENV MAMBA_ROOT_PREFIX=/opt/micromamba -ENV PATH=${MAMBA_ROOT_PREFIX}/bin:$PATH - -# Configure micromamba environment -COPY conan-el7-gcc114/environment.yml /tmp/environment.yml - RUN rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime \ # Fix Centos repo urls && sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* \ && sed -i 's|#\s*baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* \ && yum update -y \ - && yum install -y curl bzip2 git \ + && yum install -y curl bzip2 \ && yum clean all \ # Add groups && groupadd g1001 -g 1001 \ @@ -23,24 +17,41 @@ RUN rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Europe/Paris /etc/localti && useradd -ms /bin/bash conan -u 1000 -g 1001 -G 1000,2000,999 \ # Add sudo for conan user && printf "conan:conan" | chpasswd \ - && printf "conan ALL= NOPASSWD: ALL\\n" >> /etc/sudoers \ - # Install micromamba - && curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba \ + && printf "conan ALL= NOPASSWD: ALL\\n" >> /etc/sudoers + +ENV MAMBA_ROOT_PREFIX=/opt/micromamba +ENV PATH=${MAMBA_ROOT_PREFIX}/bin-wrappers:$PATH +ENV MAMBA_ENV=conan-el7-gcc114 + +# Configure micromamba environment +COPY ${MAMBA_ENV}/environment.yml /tmp/environment.yml + +# Install micromamba +RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj -C /usr/local/bin --strip-components=1 bin/micromamba \ # Install environment with micromamba - && micromamba create -y -f /tmp/environment.yml && \ - rm /tmp/environment.yml + && micromamba create -y -f /tmp/environment.yml \ + && rm /tmp/environment.yml \ + # Install wrapper to launch commands using micromamba for Jenkins (docker exec) + && mkdir -p /opt/micromamba/bin-wrappers \ + && echo '#!/bin/bash' > /opt/micromamba/bin-wrappers/micromamba-wrapper.sh \ + && echo 'exec /usr/local/bin/micromamba run -n ${MAMBA_ENV} $(basename $0) "$@"' >> /opt/micromamba/bin-wrappers/micromamba-wrapper.sh \ + && chmod +x /opt/micromamba/bin-wrappers/micromamba-wrapper.sh \ + # Link all binaries to wrapper + && for bin in $(ls /opt/micromamba/envs/${MAMBA_ENV}/bin); do \ + ln -s micromamba-wrapper.sh /opt/micromamba/bin-wrappers/$bin; \ + done COPY environment /etc/environment USER conan WORKDIR /home/conan # Activate environment when launching command -ENTRYPOINT ["bash", "-c" ,"eval \"$(micromamba shell hook --shell bash)\" && micromamba activate conan-el7-gcc114 && \"$@\"", "-s"] +ENTRYPOINT ["bash", "-c" ,"eval \"$(micromamba shell hook --shell bash)\" && micromamba activate ${MAMBA_ENV} && \"$@\"", "-s"] # Define default shell and activate environment SHELL ["/bin/bash", "-c"] -RUN echo 'eval "$(micromamba shell hook --shell=bash)"' >> ~/.bashrc && \ - echo 'micromamba activate conan-el7-gcc114' >> ~/.bashrc +RUN echo 'eval "$(micromamba shell hook --shell=bash)"' >> ~/.bashrc \ + && echo 'micromamba activate ${MAMBA_ENV}' >> ~/.bashrc # Lauch interactive shell by default CMD ["/bin/bash"]