-
Notifications
You must be signed in to change notification settings - Fork 10
Run MONICA in Docker and Singularity
There is a Docker image for MONICA. zalfrpm/monica-cluster
It is build on Debian9 as base.
It runs MONICA with an input proxy, an output proxy and an adjustable amount of MONICA working processes. A container is meant to run on a multiprocessor machine as a service.
docker run -p <input port>:6666 -p <output port>:7777 --env monica_instances=<number of monica worker> --rm --name <monica cluster name> zalfrpm/monica-cluster:<tag>
-
zalfrpm/monica-cluster:<tag> - image name on docker hub find the available tags here
-
-p <input port>:6666 - (optional) input port, without this parameter a random port will be chosen by docker
-
-p <output port>:7777 - (optional) output port, without this parameter a random port will be chosen by docker
-
--env monica_instances=<number of monica worker> - (optional) set number of monica worker processes that will be started, default is 3.
-
--rm - (optional) remove the container when stopped
-
--name <monica cluster name> - (optional) human readable name
-
build a singularity image with docker as blueprint
singularity pull docker://zalfrpm/monica-cluster:<tag>
shell script:
#!/bin/bash -x VERSION=2.2.1.170 # or higher SINGULARITY_IMAGE=monica-cluster_${VERSION}.sif
#create a log output folder for proxy LOGOUT=/var/log MOUNT_LOG=~/log/supervisor/monica/proxy mkdir -p ~${MOUNT_LOG}
export monica_intern_in_port=6677 export monica_intern_out_port=7788 export monica_consumer_port=7777 export monica_producer_port=6666
export monica_autostart_proxies=true export monica_autostart_worker=false export monica_auto_restart_proxies=true export monica_auto_restart_worker=false
singularity instance start -B $MOUNT_LOG:$LOGOUT ${SINGULARITY_IMAGE} monica_proxy nohup singularity run instance://monica_proxy > /dev/null 2>&1 &
Use this script in a job system, such as SLURM
shell script for SLURM:
#!/bin/bash -x VERSION=2.2.1.170 # or higher MOUNT_DATA=/my/path/to/climate/files SINGULARITY_IMAGE=monica-cluster_${VERSION}.sif NUM_WORKER=10 # number of cores used PROXY_SERVER=localhost # host where your proxy is running INTERN_IN_PORT=6677 INTERN_OUT_PORT=7788 DATADIR=/monica_data/climate-data
#create a log output folder LOGOUT=/var/log MOUNT_LOG=~/log/supervisor/monica/worker mkdir -p $MOUNT_LOG
export monica_instances=$NUM_WORKER export monica_intern_in_port=${INTERN_IN_PORT} export monica_intern_out_port=${INTERN_OUT_PORT} export monica_autostart_proxies=false export monica_autostart_worker=true export monica_auto_restart_proxies=false export monica_auto_restart_worker=true export monica_proxy_in_host=$PROXY_SERVER export monica_proxy_out_host=$PROXY_SERVER
srun singularity run -B $MOUNT_DATA:$DATADIR,$MOUNT_LOG:$LOGOUT --pwd / ${SINGULARITY_IMAGE}