From c0546f649ee9ec7dd4e9b0cb87b23170f54bed4a Mon Sep 17 00:00:00 2001 From: David Minton Date: Tue, 6 Jun 2023 22:25:20 -0400 Subject: [PATCH] Improved Docker container --- Dockerfile | 51 ++++++++++++++++-------- docker/.gitignore | 3 +- docker/bin/swiftest_driver | 2 + docker/bin/{swiftest => swiftest_python} | 0 4 files changed, 38 insertions(+), 18 deletions(-) create mode 100755 docker/bin/swiftest_driver rename docker/bin/{swiftest => swiftest_python} (100%) diff --git a/Dockerfile b/Dockerfile index 35e450d7e..9fe400197 100644 --- a/Dockerfile +++ b/Dockerfile @@ -154,26 +154,19 @@ RUN echo 'find_path(NETCDF_INCLUDE_DIR NAMES netcdf.mod HINTS ENV NETCDF_FORTRAN 'mark_as_advanced(NETCDF_LIBRARY NETCDF_FORTRAN_LIBRARY NETCDF_INCLUDE_DIR)\n' > /swiftest/cmake/Modules/FindNETCDF.cmake && \ cd swiftest && \ cmake -S . -B build -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" -DCONTAINERIZE=ON -DUSE_COARRAY=ON -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=OFF &&\ - cmake --build build --verbose && \ + cmake --build build && \ + cp bin/swiftest_driver /usr/local/bin/swiftest_driver_caf && \ + rm -rf build && \ + cmake -S . -B build -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" -DCONTAINERIZE=ON -DUSE_COARRAY=OFF -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=OFF &&\ + cmake --build build && \ cmake --install build # Driver container -FROM ubuntu:20.04 as Driver +FROM continuumio/miniconda3 as setup_conda COPY --from=build /opt/intel/oneapi/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libicaf.so /usr/local/lib/ COPY --from=build /usr/local/bin/swiftest_driver /usr/local/bin -RUN apt-get update && apt-get upgrade -y && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - libsz2 libcurl3-gnutls libxml2 && \ - rm -rf /var/lib/apt/lists/* - -# Production container -FROM continuumio/miniconda3 - -ENV LD_LIBRARY_PATH="/usr/local/lib" -ENV SHELL="/bin/bash" -COPY ./python/ . -COPY --from=build /opt/intel/oneapi/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libicaf.so /usr/local/lib/ COPY --from=build /usr/local/bin/swiftest_driver /bin/ +COPY ./python/. /opt/conda/pkgs/swiftest/python/ RUN apt-get update && apt-get upgrade -y && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ @@ -184,10 +177,34 @@ RUN apt-get update && apt-get upgrade -y && \ conda config --set solver libmamba && \ conda install -c conda-forge conda-build numpy scipy matplotlib pandas xarray astropy astroquery tqdm x264 bottleneck ffmpeg h5netcdf netcdf4 dask -y && \ conda update --all -y && \ - cd swiftest && conda develop . && \ - mkdir -p /.astropy && \ + cd /opt/conda/pkgs/swiftest/python/swiftest && conda develop . && \ + conda clean --all -y + +# Production container +FROM ubuntu:20.04 + +RUN apt-get update && apt-get upgrade -y && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + libsz2 libcurl3-gnutls libxml2 && \ + rm -rf /var/lib/apt/lists/* + +ENV LD_LIBRARY_PATH="/usr/local/lib" +ENV SHELL="/bin/bash" +COPY --from=build /opt/intel/oneapi/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libicaf.so /usr/local/lib/ +COPY --from=build /opt/intel/oneapi/mpi/2021.9.0//lib/release/libmpi.so.12 /usr/local/lib/ +COPY --from=build /opt/intel/oneapi/compiler/2023.1.0/linux/compiler/lib/intel64_lin/libintlc.so.5 /usr/local/lib/ +COPY --from=setup_conda /opt/conda/. /opt/conda/ +COPY --from=build /opt/intel/oneapi/mpi/latest/bin/mpiexec.hydra /usr/local/bin/ +COPY --from=build /usr/local/bin/swiftest_driver /usr/local/bin +COPY --from=build /usr/local/bin/swiftest_driver_caf /usr/local/bin/ + +RUN mkdir -p /.astropy && \ chmod -R 777 /.astropy && \ + mkdir -p /.cache/matplotlib && \ mkdir -p /.config/matplotlib && \ - chmod -R 777 /.config/matplotlib + chmod -R 777 /.cache/matplotlib && \ + chmod -R 777 /.config/matplotlib && \ + mkdir -p /opt/conda/pkgs/swiftest/bin && \ + ln -s /usr/local/bin/swiftest_driver /opt/conda/pkgs/swiftest/bin/swiftest_driver ENTRYPOINT ["/opt/conda/bin/python"] \ No newline at end of file diff --git a/docker/.gitignore b/docker/.gitignore index 09c5585d1..772f5a9d9 100644 --- a/docker/.gitignore +++ b/docker/.gitignore @@ -2,4 +2,5 @@ !.gitignore !install.sh !bin -!bin/swiftest +!bin/swiftest_python +!bin/swiftest_driver diff --git a/docker/bin/swiftest_driver b/docker/bin/swiftest_driver new file mode 100755 index 000000000..0f7d8b5dd --- /dev/null +++ b/docker/bin/swiftest_driver @@ -0,0 +1,2 @@ +#!/bin/sh -- +docker run -v $(pwd):$(pwd) -w $(pwd) --user "$(id -u):$(id -g)" -ti --entrypoint /usr/local/bin/swiftest_driver -e OMP_NUM_THREADS -e FOR_COARRAY_NUM_IMAGES swiftest:1.0.0 "$@" \ No newline at end of file diff --git a/docker/bin/swiftest b/docker/bin/swiftest_python similarity index 100% rename from docker/bin/swiftest rename to docker/bin/swiftest_python