1 Several docker images with full installations of deal.II and (almost) all its dependencies are
2 available on https://hub.docker.com/r/dealii/dealii/.
4 Under the section `tags`, you'll find all available configurations.
6 All libraries and dealii are installed under `/home/dealii/libs`. The default user in the image is `dealii`.
8 These images can be used, for example, in the following way:
11 TAG=dealii/dealii:dealii:v8.5.0-gcc-mpi-fulldepsmanual-debugrelease
13 docker tag $TAG dealii
15 # Now run inside the image, sharing the current directory
16 docker run --rm -t -i -v `pwd`:/home/dealii/app dealii
17 dealii@3c1bb6ff22b4:~$
19 the prompt `dealii@3c1bb6ff22b4:~$` is inside the docker image. For example, if you type
21 dealii@3c1bb6ff22b4:~$ export | grep DIR
22 declare -x ARPACK_DIR="/home/dealii/libs/arpack-3.4.0"
23 declare -x DEAL_II_DIR="~/dealii-v8.5.pre.4"
24 declare -x HDF5_DIR="/home/dealii/libs/hdf5-1.10.0-patch1"
25 declare -x METIS_DIR="/home/dealii/libs/petsc-3.7.4"
26 declare -x MUMPS_DIR="/home/dealii/libs/petsc-3.7.4"
27 declare -x OCE_DIR="/home/dealii/libs/oce-0.17.2"
28 declare -x OPENCASCADE_DIR="/home/dealii/libs/oce-0.17.2"
29 declare -x P4EST_DIR="/home/dealii/libs/p4est-1.1"
30 declare -x PARMETIS_DIR="/home/dealii/libs/petsc-3.7.4"
31 declare -x PETSC_DIR="/home/dealii/libs/petsc-3.7.4"
32 declare -x SCALAPACK_DIR="/home/dealii/libs/petsc-3.7.4"
33 declare -x SLEPC_DIR="/home/dealii/libs/slepc-3.7.3"
34 declare -x SUPERLU_DIR="/home/dealii/libs/petsc-3.7.4"
35 declare -x SUPERLU_DIST_DIR="/home/dealii/libs/petsc-3.7.4"
36 declare -x TRILINOS_DIR="/home/dealii/libs/trilinos-12-8-1"
37 dealii@3c1bb6ff22b4:~$
39 you will see what was installed where in the image.
41 These images are guaranteed to work identically on Mac OS, Linux, Windows, on Travis CI, and on gitlab CI.
43 Here you can find an example `.travis.yml` that uses one of the available images to test a user application using a controlled environment:
61 - docker pull dealii/dealii:v8.5.0-gcc-mpi-fulldepsmanual-debugrelease
64 - export DOCKER_RUN="docker run -P -v `pwd`:/home/dealii/app:rw dealii/dealii:v8.5.0-gcc-mpi-fulldepsmanual-debugrelease /bin/sh -c"
65 - $DOCKER_RUN "test -d app/build-travis && rm -rf app/build-travis; mkdir app/build-travis; cd app/build-travis; cmake -GNinja ../; ninja"
66 - $DOCKER_RUN "cd app/build-travis; ctest -N; ctest -V"
69 Gitlab works differently, allowing you to directly run the tester inside your custom image. An example `.gitlab-ci.yml` to use with your own applications is here:
72 image: dealii/dealii:v8.5.0-gcc-mpi-fulldepsmanual-debugrelease
75 - ./scripts/check_indentation.sh
79 - test -d build_linux_debug && rm -rf build_linux_debug
80 - mkdir build_linux_debug; cd build_linux_debug; cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug; ninja
81 - ctest -N; ctest -V; cd ..
85 - test -d build_linux_release && rm -rf build_linux_release
86 - mkdir build_linux_release; cd build_linux_release; cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release; ninja
87 - ctest -N; ctest -V; cd ..
90 The above will create two `pipelines`, in gitlab terminology, and run a `Debug` and `Release` ctest.
In the beginning the Universe was created. This has made a lot of
people very angry and has been widely regarded as a bad move.
Douglas Adams