diff options
Diffstat (limited to 'share')
11 files changed, 181 insertions, 4 deletions
diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index bf5300ea96..72fa08a33a 100755 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -794,7 +794,7 @@ _spack_config_revert() { } _spack_containerize() { - SPACK_COMPREPLY="-h --help --monitor --monitor-save-local --monitor-no-auth --monitor-tags --monitor-keep-going --monitor-host --monitor-prefix" + SPACK_COMPREPLY="-h --help --monitor --monitor-save-local --monitor-no-auth --monitor-tags --monitor-keep-going --monitor-host --monitor-prefix --list-os --last-stage" } _spack_create() { diff --git a/share/spack/templates/container/Dockerfile b/share/spack/templates/container/Dockerfile index c23ad64188..67b8986a00 100644 --- a/share/spack/templates/container/Dockerfile +++ b/share/spack/templates/container/Dockerfile @@ -1,3 +1,8 @@ +{% if render_phase.bootstrap %} +{{ bootstrap.recipe }} + +{% endif %} +{% if render_phase.build %} # Build stage with Spack pre-installed and ready to be used FROM {{ build.image }} as builder @@ -35,7 +40,8 @@ RUN cd {{ paths.environment }} && \ {% if extra_instructions.build %} {{ extra_instructions.build }} {% endif %} - +{% endif %} +{% if render_phase.final %} # Bare OS image to run the installed executables FROM {{ run.image }} @@ -49,12 +55,12 @@ RUN {% if os_package_update %}{{ os_packages_final.update }} \ && {% endif %}{{ os_packages_final.install }} {{ os_packages_final.list | join | replace('\n', ' ') }} \ && {{ os_packages_final.clean }} {% endif %} - {% if extra_instructions.final %} + {{ extra_instructions.final }} {% endif %} {% for label, value in labels.items() %} LABEL "{{ label }}"="{{ value }}" {% endfor %} - ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"] +{% endif %} diff --git a/share/spack/templates/container/alpine_3.dockerfile b/share/spack/templates/container/alpine_3.dockerfile new file mode 100644 index 0000000000..583288b7cb --- /dev/null +++ b/share/spack/templates/container/alpine_3.dockerfile @@ -0,0 +1,7 @@ +{% extends "container/bootstrap-base.dockerfile" %} +{% block install_os_packages %} +RUN apk update \ + && apk add --no-cache curl findutils gcc g++ gfortran git gnupg \ + make patch python3 py3-pip tcl unzip bash \ + && pip3 install boto3 +{% endblock %} diff --git a/share/spack/templates/container/amazonlinux_2.dockerfile b/share/spack/templates/container/amazonlinux_2.dockerfile new file mode 100644 index 0000000000..5ab05562c0 --- /dev/null +++ b/share/spack/templates/container/amazonlinux_2.dockerfile @@ -0,0 +1,24 @@ +{% extends "container/bootstrap-base.dockerfile" %} +{% block install_os_packages %} +RUN yum update -y \ + && yum groupinstall -y "Development Tools" \ + && yum install -y \ + curl \ + findutils \ + gcc-c++ \ + gcc \ + gcc-gfortran \ + git \ + gnupg2 \ + hostname \ + iproute \ + make \ + patch \ + python \ + python-pip \ + python-setuptools \ + unzip \ + && pip install boto3 \ + && rm -rf /var/cache/yum \ + && yum clean all +{% endblock %} diff --git a/share/spack/templates/container/bootstrap-base.dockerfile b/share/spack/templates/container/bootstrap-base.dockerfile new file mode 100644 index 0000000000..0674ddd541 --- /dev/null +++ b/share/spack/templates/container/bootstrap-base.dockerfile @@ -0,0 +1,45 @@ +FROM {{ bootstrap.image }} as bootstrap + +{% block env_vars %} +ENV SPACK_ROOT=/opt/spack \ + CURRENTLY_BUILDING_DOCKER_IMAGE=1 \ + container=docker +{% endblock %} + +{% block install_os_packages %} +{% endblock %} + +RUN mkdir $SPACK_ROOT && cd $SPACK_ROOT && \ + {{ bootstrap.spack_checkout }} && \ + mkdir -p $SPACK_ROOT/opt/spack + +RUN ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/docker-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/interactive-shell \ + && ln -s $SPACK_ROOT/share/spack/docker/entrypoint.bash \ + /usr/local/bin/spack-env + +RUN mkdir -p /root/.spack \ + && cp $SPACK_ROOT/share/spack/docker/modules.yaml \ + /root/.spack/modules.yaml \ + && rm -rf /root/*.* /run/nologin $SPACK_ROOT/.git + +# [WORKAROUND] +# https://superuser.com/questions/1241548/ +# xubuntu-16-04-ttyname-failed-inappropriate-ioctl-for-device#1253889 +RUN [ -f ~/.profile ] \ + && sed -i 's/mesg n/( tty -s \\&\\& mesg n || true )/g' ~/.profile \ + || true + +{% block post_checkout %} +{% endblock %} + +WORKDIR /root +SHELL ["docker-shell"] + +# Creates the package cache +RUN spack spec hdf5+mpi + +ENTRYPOINT ["/bin/bash", "/opt/spack/share/spack/docker/entrypoint.bash"] +CMD ["interactive-shell"] diff --git a/share/spack/templates/container/centos_7.dockerfile b/share/spack/templates/container/centos_7.dockerfile new file mode 100644 index 0000000000..6ce2181298 --- /dev/null +++ b/share/spack/templates/container/centos_7.dockerfile @@ -0,0 +1,26 @@ +{% extends "container/bootstrap-base.dockerfile" %} +{% block install_os_packages %} +RUN yum update -y \ + && yum install -y epel-release \ + && yum update -y \ + && yum --enablerepo epel groupinstall -y "Development Tools" \ + && yum --enablerepo epel install -y \ + curl \ + findutils \ + gcc-c++ \ + gcc \ + gcc-gfortran \ + git \ + gnupg2 \ + hostname \ + iproute \ + make \ + patch \ + python \ + python-pip \ + python-setuptools \ + unzip \ + && pip install boto3 \ + && rm -rf /var/cache/yum \ + && yum clean all +{% endblock %} diff --git a/share/spack/templates/container/centos_8.dockerfile b/share/spack/templates/container/centos_8.dockerfile new file mode 100644 index 0000000000..48deb14673 --- /dev/null +++ b/share/spack/templates/container/centos_8.dockerfile @@ -0,0 +1,29 @@ +{% extends "container/bootstrap-base.dockerfile" %} +{% block install_os_packages %} +RUN yum update -y \ + # See https://fedoraproject.org/wiki/EPEL#Quickstart for powertools + && yum install -y dnf-plugins-core \ + && dnf config-manager --set-enabled powertools \ + && yum install -y epel-release \ + && yum update -y \ + && yum --enablerepo epel groupinstall -y "Development Tools" \ + && yum --enablerepo epel install -y \ + curl \ + findutils \ + gcc-c++ \ + gcc \ + gcc-gfortran \ + git \ + gnupg2 \ + hostname \ + iproute \ + make \ + patch \ + python38 \ + python38-pip \ + python38-setuptools \ + unzip \ + && pip3 install boto3 \ + && rm -rf /var/cache/yum \ + && yum clean all +{% endblock %} diff --git a/share/spack/templates/container/cuda_11_2_1.dockerfile b/share/spack/templates/container/cuda_11_2_1.dockerfile new file mode 120000 index 0000000000..9c0cea3c2a --- /dev/null +++ b/share/spack/templates/container/cuda_11_2_1.dockerfile @@ -0,0 +1 @@ +ubuntu_2004.dockerfile
\ No newline at end of file diff --git a/share/spack/templates/container/ubuntu_1604.dockerfile b/share/spack/templates/container/ubuntu_1604.dockerfile new file mode 100644 index 0000000000..95864e6bed --- /dev/null +++ b/share/spack/templates/container/ubuntu_1604.dockerfile @@ -0,0 +1,32 @@ +{% extends "container/bootstrap-base.dockerfile" %} +{% block env_vars %} +{{ super() }} +ENV DEBIAN_FRONTEND=noninteractive \ + LANGUAGE=en_US.UTF-8 \ + LANG=en_US.UTF-8 \ + LC_ALL=en_US.UTF-8 +{% endblock %} +{% block install_os_packages %} +RUN apt-get -yqq update \ + && apt-get -yqq install --no-install-recommends \ + build-essential \ + ca-certificates \ + curl \ + file \ + g++ \ + gcc \ + gfortran \ + git \ + gnupg2 \ + iproute2 \ + locales \ + lua-posix \ + make \ + python3 \ + python3-pip \ + python3-setuptools \ + unzip \ + && locale-gen en_US.UTF-8 \ + && pip3 install boto3 \ + && rm -rf /var/lib/apt/lists/* +{% endblock %} diff --git a/share/spack/templates/container/ubuntu_1804.dockerfile b/share/spack/templates/container/ubuntu_1804.dockerfile new file mode 100644 index 0000000000..47af990d6a --- /dev/null +++ b/share/spack/templates/container/ubuntu_1804.dockerfile @@ -0,0 +1,6 @@ +{% extends "container/ubuntu_1604.dockerfile" %} +{% block post_checkout %} +# [WORKAROUND] +# https://bugs.launchpad.net/ubuntu/+source/lua-posix/+bug/1752082 +RUN ln -s posix_c.so /usr/lib/x86_64-linux-gnu/lua/5.2/posix.so +{% endblock %} diff --git a/share/spack/templates/container/ubuntu_2004.dockerfile b/share/spack/templates/container/ubuntu_2004.dockerfile new file mode 120000 index 0000000000..106119ce68 --- /dev/null +++ b/share/spack/templates/container/ubuntu_2004.dockerfile @@ -0,0 +1 @@ +ubuntu_1604.dockerfile
\ No newline at end of file |