Set up a grpc4bmi server to run a containerized version of the CEM model through Python.
Build this example locally with:
docker build --tag cem-grpc4bmi .
The image is built on the csdms/grpc4bmi base image,
which is built on the condaforge/miniforge3 base image.
The OS is Linux/Ubuntu.
The CEM model, grpc4bmi, and the grpc4bmi server are installed in /opt/conda
.
The CEM grpc4bmi server is exposed through port 55555.
Use the grpc4bmi Docker client to access the BMI methods of the containerized model.
Install with pip:
pip install grpc4bmi
Then, in a Python session, access CEM in the image built above with:
from grpc4bmi.bmi_client_docker import BmiClientDocker
m = BmiClientDocker(image="cem-grpc4bmi", image_port=55555, work_dir=".")
m.get_component_name()
del m # stop container cleanly
If the image isn't found locally, it's pulled from Docker Hub
(e.g., try the csdms/cem-grpc4bmi
image).
For more in-depth examples of running the CEM model through grpc4bmi, see the examples directory.
A versioned, multiplatform image is hosted on Docker Hub at csdms/cem-grpc4bmi. This image is automatically built and pushed to Docker Hub with the release CI workflow. The workflow is only run when the repository is tagged. To manually build and push an update, run:
docker buildx build --platform linux/amd64,linux/arm64 -t csdms/cem-grpc4bmi:latest --push .
A user can pull this image from Docker Hub with:
docker pull csdms/cem-grpc4bmi
optionally with the latest
tag or with a version tag.
This work is supported by the U.S. National Science Foundation under Award No. 2103878, Frameworks: Collaborative Research: Integrative Cyberinfrastructure for Next-Generation Modeling Science.