Base images

Two Docker images, one for the BMI mappings and examples, the other for the grpc4bmi C++ server, are used as base images in this project. Both are built on recent conda-forge and Ubuntu base images.

Base Docker images

Figure 1 : Inheritance diagram for the BMI and grpc4bmi base images.

BMI base image

The BMI base image contains built versions of the BMI mappings and example models for C, C++, Fortran, and Python. This image is the base for building models that expose a BMI in these languages, or for inter-language model coupling.

Table 1 : Repositories contained in the BMI base image.

Language

Mapping

Example implementation

C

bmi-c

bmi-example-c

C++

bmi-cxx

bmi-example-cxx

Fortran

bmi-fortran

bmi-example-fortran

Python

bmi-python

bmi-example-python

The image is built on the condaforge/miniforge3 base image available from Docker Hub. The OS is Linux/Ubuntu. The shell is bash. Conda, as well as the BMI language mappings and examples, are installed in CONDA_DIR=/opt/conda. The base environment is activated.

The source code used to build this image, as well as simple examples of its use, can be found on GitHub at csdms/bmi-docker. A versioned, multiplatform image built from this repository is hosted on Docker Hub at csdms/bmi.

BMI base image

grpc4bmi base image

The grpc4bmi base image is built on the BMI base image, so it contains everything described in the section above. Further, it contains a built version of the grpc4bmi C++ server, also installed in CONDA_DIR=/opt/conda. Dependencies for the server are met with gRPC conda packages available from the conda-forge channel.

The source code used to build this image can be found on GitHub at csdms/grpc4bmi-docker. A versioned, multiplatform image built from this repository is hosted on Docker Hub at csdms/grpc4bmi.

grpc4bmi base image