Is it possible to link/container bind mount cryosparc install to have multiple instances running?

Hello,

We would like to run multiple cryosparc instances.

Would it be possible to just make a new folder, linking all the content of the cryosparc_master install except of the config.sh. Then change port, DB and so on in the config sh and start another instance like that?
I could also use podman to just run it in a container and bind mount the folder not changing the config itself but the bind mount to the database and port.

The question i have though, what happens, if i would then update. Of course shutting down all instances before. Is the database also updated in the update process or just when i restart the instance? Meaning could i just update the host system install and by that all container instances.

Greetings
Kilian

Based on feedback from our team, I recommend against assumptions about what cryoSPARC components might or might not be changed during a cryoSPARC update.
I recommend:

  • keeping non-overlapping software installations, databases, port ranges, project directory sets for each cryoSPARC instance
  • achieving management efficiency and the flexibility of divergent instance configurations with an “infrastructure as code”-like approach
1 Like

Thanks!

So i build a container image using buildah and installing the needed things for a cryosparc master instance. I just mount a different database and ports, license when starting the containers (e.g. ansible looping over items). Like this for example:

podman run --name 'cryo_test' \ 
-d -v/sbdata/cryosparc_database/container/database_test:/cryosparc_database \
-v/sbdata:/sbdata \ 
`for((i=0;i<=6;i++)) do echo -n "-p $((40000+i)):$((40000+i)) "; done ` \
-e CRYOSPARC_BASE_PORT=40000 \
-e CRYOSPARC_LICENSE_ID=XXXX cryosparc

Since each instance will submit via normal Slurm to our cluster i just deleted the license in the worker config and set it in the submission script.

I thought now for a crypsparc update i could just update the container image and then start the containers, but i guess then its safer to update cryosparc first in the running containers, e.g also with ansible to update the database and then update the image and restart containers with new image.

Someone else having a cleaner way to do it without duplicating everything?

cheers
Kilian