Mate Desktop in a Singularity container?

OK, I think I’ve solved this (finally :sweat_smile:).

The first issue you’ve had, turns out the easiest thing to do is just to remove mate-power-manager. Users shouldn’t be able to restart the node anyhow which I think is that widget does.

The second is something we’d already seen apparently and I just forgot about it. So, if you’ll notice in the definition file, there’s a different RPM url. I was not able to solve the issue with turbovnc 2.1.1. It says you need the openssl or gnutls libraries but when I had them installed as well (both) it made no difference, so I just upgraded.

This is my .def file which has MATE + websockify + turbovnc installed in it.

Bootstrap: docker

From: centos:7

%post   
    yum install -y epel-release
    yum groupinstall -y 'MATE Desktop'
    yum install -y python2-pip
    pip install ts
    yum install -y https://yum.osc.edu/ondemand/1.6/compute/el7Server/x86_64/python-websockify-0.8.0-1.el7.noarch.rpm
    yum install -y https://yum.osc.edu/ondemand/latest/compute/el7Server/x86_64/turbovnc-2.2.3-1.el7.x86_64.rpm
    yum remove -y tigervnc-server python2-pip mate-power-manager
    yum clean all
    rm -rf /var/cache/yum/*

This is the submit.yml.erb (that you would put into say /etc/ood/config/apps/bc_desktop/submit/container.yml.erb`) file I’ve used to get it to work which super similar to yours only with the websockify cmd being defined.

<%
  # your image location will differ
  image="/users/PZS0714/johrstrom/Public/images/sing/mate.sif"
%>
---
script:
  native:
    # your native.resources will differ
    resources:
      nodes: "<%= bc_num_slots %><%= node_type %>"
  template: "vnc"
batch_connect:
  websockify_cmd: '/usr/bin/websockify'
  script_wrapper: |
    cat << "CTRSCRIPT" > container.sh
    export PATH="$PATH:/opt/TurboVNC/bin"
    %s  
    CTRSCRIPT

    # your bindpath will differ
    export SINGULARITY_BINDPATH="$HOME,/fs,/srv,/var,/run,/tmp:$TMPDIR"

    singularity run <%= image %> /bin/bash container.sh

So, for all the users in this thread and beyond, I’m able to show that OOD handles this out of the box. The only thing left now is to get some proper documentation in place.

2 Likes