diff --git a/docker/.gitignore b/docker/.gitignore index 825a38873..215dd3f04 100644 --- a/docker/.gitignore +++ b/docker/.gitignore @@ -1,3 +1,10 @@ -!Dockerfile -!bin/ -!pull +* +!.gitignore +!install.sh +!gnu/ +!gnu/Dockerfile +!/gnu/bin/ +!/gnu/bin/swiftest_driver +!intel/ +!intel/Dockerfile +!/intel/bin/swiftest_driver diff --git a/docker/bin/.gitignore b/docker/bin/.gitignore deleted file mode 100644 index c1d7ed39d..000000000 --- a/docker/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!swiftest_driver diff --git a/docker/gnu/Dockerfile b/docker/gnu/Dockerfile new file mode 100644 index 000000000..ec64211bd --- /dev/null +++ b/docker/gnu/Dockerfile @@ -0,0 +1,44 @@ +FROM debian:stable-slim as build + +# kick everything off +RUN apt-get update && apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + ca-certificates curl git build-essential gfortran && \ + apt-get update && apt-get upgrade -y && \ + rm -rf /var/lib/apt/lists/* + +# Get CMAKE and install it +RUN mkdir -p /opt/cmake/build && \ + cd /opt/cmake/build && \ + curl -LO https://github.com/Kitware/CMake/releases/download/v3.26.2/cmake-3.26.2-linux-x86_64.sh && \ + /bin/bash cmake-3.26.2-linux-x86_64.sh --prefix=/usr/local --skip-license + +# Get dependencies +RUN apt-get update && apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + libnetcdf-dev libnetcdff-dev libcoarrays-dev libcoarrays-mpich-dev&& \ + rm -rf /var/lib/apt/lists/* + +ENV NETCDF_HOME="/usr" +ENV NETCDF_FORTRAN_HOME="/usr" +ENV INDIR="/opt/dist//usr/local" + +# Get Swiftest source code +RUN cd /opt/ && \ + git clone -b debug https://github.com/carlislewishard/swiftest.git && \ + cd swiftest && \ + mkdir build && \ + cd build && \ + cmake .. -DCMAKE_PREFIX_PATH="${INDIR}" -DCMAKE_INSTALL_PREFIX="${INDIR}" -DCONTAINERIZE=ON -DCMAKE_BUILD_TYPE=release && \ + make && \ + make install + +#Production container +FROM debian:stable-slim +COPY --from=build /opt/dist / +RUN apt-get update && apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + ca-certificates gfortran libnetcdf-dev libnetcdff-dev && \ + rm -rf /var/lib/apt/lists/* + +ENTRYPOINT ["/usr/local/bin/swiftest_driver"] \ No newline at end of file diff --git a/docker/gnu/bin/.gitignore b/docker/gnu/bin/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/docker/bin/swiftest_driver b/docker/gnu/bin/swiftest_driver similarity index 62% rename from docker/bin/swiftest_driver rename to docker/gnu/bin/swiftest_driver index d2cb42a90..f0a3638dd 100755 --- a/docker/bin/swiftest_driver +++ b/docker/gnu/bin/swiftest_driver @@ -1,2 +1,2 @@ #!/bin/sh -- -docker run -v $(pwd):$(pwd) -w $(pwd) -t -e OMP_NUM_THREADS -e FOR_COARRAY_NUM_IMAGES swiftest:latest "$@" +docker run -v $(pwd):$(pwd) -w $(pwd) -t -e OMP_NUM_THREADS -e FOR_COARRAY_NUM_IMAGES swiftest_driver:gnu "$@" diff --git a/docker/install.sh b/docker/install.sh new file mode 100755 index 000000000..f81e95e57 --- /dev/null +++ b/docker/install.sh @@ -0,0 +1,5 @@ +#!/bin/sh -- +tag=${1:-intel} +echo "Installing swiftest_driver:${tag} Docker container and executable script" +docker pull daminton/swiftest_driver:${tag} +cp -rf ${tag}/bin/swiftest_driver ../bin/ \ No newline at end of file diff --git a/docker/Dockerfile b/docker/intel/Dockerfile similarity index 100% rename from docker/Dockerfile rename to docker/intel/Dockerfile diff --git a/docker/pull b/docker/pull deleted file mode 100755 index 2367ba639..000000000 --- a/docker/pull +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -- -docker pull daminton/swiftest:latest \ No newline at end of file diff --git a/singularity/.gitignore b/singularity/.gitignore index abc0e7f03..2a259d270 100644 --- a/singularity/.gitignore +++ b/singularity/.gitignore @@ -1,3 +1,4 @@ -!swiftest.def !bin/ -!pull +!bin/swiftest_driver +!install.sh +!setenv.sh diff --git a/singularity/bin/.gitignore b/singularity/bin/.gitignore deleted file mode 100644 index c1d7ed39d..000000000 --- a/singularity/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!swiftest_driver diff --git a/singularity/install.sh b/singularity/install.sh new file mode 100755 index 000000000..50d6d56df --- /dev/null +++ b/singularity/install.sh @@ -0,0 +1,10 @@ +#!/bin/sh -- +# This will install the Singularity container version of the swiftest_driver in place of the native compiled version into ../bin. +# In order to use the executable script, the SWIFTEST_SIF environment variable must be set to point to the location of swiftest_driver.sif, which requires this script to be called via source: +# $ . ./install.sh +# +tag=${1:-intel} +echo "Installing swiftest_driver.sif Singularity container and executable script from swiftest_driver:${tag} Docker container" +singularity pull --force swiftest_driver.sif docker://daminton/swiftest_driver:${tag} +cp -rf bin/swiftest_driver ../bin/ +source ./setenv.sh \ No newline at end of file diff --git a/singularity/pull b/singularity/pull deleted file mode 100755 index a62acaf6e..000000000 --- a/singularity/pull +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -- -singularity pull --force swiftest.sif docker://daminton/swiftest:latest diff --git a/singularity/setenv.sh b/singularity/setenv.sh index 79931a298..cc8905033 100755 --- a/singularity/setenv.sh +++ b/singularity/setenv.sh @@ -1,3 +1,4 @@ -#!/bin/sh -# source this file to set the path to the swiftest.sif file -export SWIFTEST_SIF="${PWD}/swiftest.sif" +#!/bin/sh -- +# This will set the SWIFTEST_SIF environment variable as long as it is executed by source. +# $ . ./setenv.sh +export SWIFTEST_SIF="${PWD}/swiftest_driver.sif" \ No newline at end of file diff --git a/singularity/swiftest.def b/singularity/swiftest.def deleted file mode 100644 index ce6c10f63..000000000 --- a/singularity/swiftest.def +++ /dev/null @@ -1,2 +0,0 @@ -Bootstrap: docker -From: daminton/swiftest:latest \ No newline at end of file