Has anyone worked on running the Open OnDemand services inside a Singularity container?
I am attempting to do this, and getting stuck where the HTTP server cant seem to connect to the user pun socket. Has anyone seen this, or know how to get it to connect to the unix sockets.
This is the error message:
Connection refused: AH02454: HTTP: attempt to connect to Unix domain socket /var/run/ondemand-nginx//passenger.sock (*) failed
Yea I would not mount var. I don’t use singularity alot, but I think there are default mounts? That socket especially should be ephemeral so, I’m make sure /var/run/ondemand-nginx/$USER isn’t mounted in the container.
Are you trying to run this at your site or do you use Singularity on your lap/desktop? I’d be interested in knowing the experience you’d want. We’ve started to get the tooling better for running containers, though singularity is missing.
I am working on a proof of concept of OnDemand for us on our large clusters. I was able to setup a basic Install on one of our test clusters. I built a desktop environment that starts up a singularity container on a compute node, and that worked well. I also setup a jupyter notebook/lab system in singularity container.
In looking at how to reliably deploy the OnDemand Frontend services, we wanted to see if it would run in a singularity container, such that after a reinstall of the controlling nodes it could just be started up quickly by just executing the container. We are starting it as the root user, and ran into some issues early on with the container not having the whole user database available, but worked past that by binding the nss paths into place.(I think this is what left the strange socket around). Once we cleaned that up the system works just as it did when it was installed on the main system.
So if I understood correctly you built singularity image as root, so you will have root in container.
Maybe you tried --fakeroot to build and run as non-root user?