The repository builds the Docker image from two building blocks:
- The jcsda/docker_base image, which contains the compilers and mpi library
- The jedi-stack build scripts
For a list of the software that is installed in the image, see the jedi-stack repo (select the develop branch for the most up to date information).
Our current workflow is to have a different container for each compiler/mpi combination we support. So, all libraries are installed in /usr/local, as opposed to the module-based setup otherwise produced by the jedi-stack build system.
The major NCEP libraries are also installed at :
- /nwprod/lib/bacio/v2.0.1/libbacio_v2.0.1_4.a
- /nwprod/lib/bacio/v2.0.1/libbacio_v2.0.1_8.a
- /nwprod/lib/ip/v2.0.0/libip_v2.0.0_4.a
- /nwprod/lib/ip/v2.0.0/libip_v2.0.0_8.a
- /nwprod/lib/ip/v2.0.0/libip_v2.0.0_d.a
- /nwprod/lib/sigio/v2.0.1/lib/libsigio_v2.0.1_4.a
- /nwprod/lib/sigio/v2.0.1/libsigio_v2.0.1_4.a
- /nwprod/lib/sp/v2.0.2/libsp_v2.0.2_4.a
- /nwprod/lib/sp/v2.0.2/libsp_v2.0.2_8.a
- /nwprod/lib/sp/v2.0.2/libsp_v2.0.2_d.a
- /nwprod/lib/w3emc/v2.2.0/libw3emc_v2.2.0_4.a
- /nwprod/lib/w3emc/v2.2.0/libw3emc_v2.2.0_8.a
- /nwprod/lib/w3emc/v2.2.0/libw3emc_v2.2.0_d.a
- /nwprod/lib/w3nco/v2.0.6/libw3nco_v2.0.6_4.a
- /nwprod/lib/w3nco/v2.0.6/libw3nco_v2.0.6_8.a
- /nwprod/lib/w3nco/v2.0.6/libw3nco_v2.0.6_d.a
To build one of the docker containers, enter, e.g.:
./build_container.sh gnu-openmpi-dev betaThe first argument (required) is the name of the container, which must match one of the Dockerfiles in the repo. The second argument (optional) is the tag. If omitted, it defaults to beta
After building the container, the next step is typically to test it by building, e.g. fv3-bundle. After verifying that the container works, then you can push it to Docker Hub with
./push_beta_to_latest.sh gnu-openmpi-dev betaThe first and second arguments are the name of the container (required) and the tag (optional, defaults to beta), as above.
This will save the previous latest image on Docker Hub with the revert tag, retag the new container as latest and push the new, latest container to Docker Hub.
Please contact Mark Miesch, if you need more libraries being included.