Skip to content

Commit

Permalink
install EasyBuild as a module in base image + clean up GCC 9.3.0 image
Browse files Browse the repository at this point in the history
  • Loading branch information
boegel committed May 28, 2020
1 parent eb44877 commit 8613cb2
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 19 deletions.
16 changes: 14 additions & 2 deletions containers/Dockerfile.base-centos7
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ ARG EB_VER=4.2.1
LABEL easybuild_version=${EB_VER}
# install required packages (EPEL is required for Lmod)
RUN yum install -y epel-release \
&& yum install -y bzip2 file gcc-c++ git Lmod make openssl-devel patch python3-pip unzip vim which
&& yum install -y bzip2 file gcc-c++ git Lmod make openssl openssl-devel patch python3-pip unzip vim which rdma-core-devel
# install EasBuild & archspec
RUN pip3 install easybuild==${EB_VER} archspec
# add 'easybuild' user
RUN useradd -ms /bin/bash easybuild
# create /scratch & /easybuild directories
RUN mkdir /scratch && chown easybuild:easybuild /scratch && mkdir /easybuild && chown easybuild:easybuild /easybuild
# define $EB_PYTHON to ensure EasyBuild runs with python3
ENV EB_PYTHON=python3
# Define the ENTRYPOINT for subsequent commands (CMD)
Expand All @@ -19,5 +21,15 @@ SHELL ["/bin/bash", "-l", "-c"]
CMD ["bash"]
# switch to 'easybuild' user
USER easybuild
# install EasyBuild as a module (& clean up /scratch)
RUN eb --install-latest-eb-release --prefix /scratch --installpath /easybuild && rm -rf /scratch/*
# print info on Lmod & EasyBuild
RUN ml --version && which -a eb && eb --version & eb --show-system-info
RUN ml use /easybuild/modules/all && ml EasyBuild && ml --version && which -a eb && eb --version & eb --show-system-info
# remove globally installed EasyBuild, we can use the module going forward
USER root
RUN pip3 uninstall -y easybuild
# switch to 'easybuild' user
USER easybuild
WORKDIR /home/easybuild
# disable output buffering in Python, so we see EasyBuild output as it progresses
ENV PYTHONUNBUFFERED=TRUE
18 changes: 1 addition & 17 deletions containers/Dockerfile.centos7-GCC-9.3.0
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,8 @@ RUN export HOST_CPU_ARCH=$(python3 -c 'import archspec.cpu; print(archspec.cpu.h
# use $CPU_ARCH to define label and set it as environment variable (to use in subsequent builds
LABEL cpu_arch=${CPU_ARCH}
ENV CPU_ARCH=${CPU_ARCH}
# for example: docker build --build-arg CPU_ARCH=haswell
# create /scratch & /easybuild directories
USER root
RUN mkdir /scratch && chown easybuild:easybuild /scratch
RUN mkdir /easybuild && chown easybuild:easybuild /easybuild
USER easybuild
# use /easybuild for everything that should persist in the container (software, modules and sources)
# everything else goes in /scratch, which will be cleaned out
ENV EASYBUILD_PREFIX=/scratch
ENV EASYBUILD_INSTALLPATH=/easybuild
ENV EASYBUILD_SOURCEPATH=/easybuild/sources
# disable output buffering in Python, so we see EasyBuild output as it progresses
ENV PYTHONUNBUFFERED=TRUE
# install software & accompanying modules
RUN eb GCC-9.3.0.eb --robot --trace \
RUN eb --prefix /scratch --installpath /easybuild GCC-9.3.0.eb --robot --trace \
# clean up everything in /scratch
&& rm -rf /scratch/*
# finalize /easybuild, no changes can be made in /easybuild that persist!
VOLUME /easybuild
# make sure we start in /home/easybuild rather than / when shell in started in container
WORKDIR /home/easybuild

0 comments on commit 8613cb2

Please sign in to comment.