Commit a1bd63f7 authored by Stefano Alberto Russo's avatar Stefano Alberto Russo
Browse files

Added minimaldesktop GUI to the base container v3.10 and added the prefactor3 GUI version.

parent 32bafd3a
Loading
Loading
Loading
Loading
+59 −4
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@ RUN apt-get install git curl sudo nano -y

RUN cd /opt/ && git clone https://github.com/lofar-astron/LOFARBeam.git
RUN mkdir /opt/LOFARBeam/build && cd /opt/LOFARBeam/build && cmake -DCMAKE_INSTALL_PREFIX=/opt/lofarsoft -DPYTHON_EXECUTABLE=$(which python) -DCASACORE_INCLUDE_DIRS=/opt/lofarsoft/include/casacore/ -DCASACORE_LIBRARIES=/opt/lofarsoft/lib/ -DCASACORE_ROOT_DIR=/opt/lofarsoft/ ../ && make -j16 && make install 


#------------------------
# Lofar user
#------------------------
@@ -37,10 +39,63 @@ COPY data/input_data /input_data
COPY data/output_data /output_data
RUN chown lofar:lofar /home/lofar && chown -R lofar:lofar /input_data && chown -R lofar:lofar /output_data

# This is required mainly for Singularity
RUN mv /home/lofar /home/vanilla_lofar
RUN ln -s /tmp/lofarhome /home/lofar
RUN rm -rf /tmp/lofarhome

#----------------------
# Minimal Desktop
#----------------------

# Utilities
RUN apt-get install -y telnet unzip wget supervisor build-essential python-dev git-core openjdk-8-jre

# Global Supervisord conf
COPY files/supervisord.conf /etc/supervisor/

# Install xvfb that triggers minimal install of X base packages and xterm
RUN apt-get install xvfb xterm  -y

# Install base packages for VNC server and headless desktop (2)
RUN cd /opt && wget https://bintray.com/tigervnc/stable/download_file?file_path=tigervnc-1.8.0.x86_64.tar.gz -O tigervnc-1.8.0.x86_64.tar.gz \
            && tar -zxvf tigervnc-1.8.0.x86_64.tar.gz \
            && mv tigervnc-1.8.0.x86_64 tigervnc

# Supervisord configuration
COPY files/supervisord_vnc.conf /etc/supervisor/conf.d/
COPY files/run_vnc.sh /etc/supervisor/conf.d/
COPY files/run_novnc.sh /etc/supervisor/conf.d/
RUN chmod 755 /etc/supervisor/conf.d/run_vnc.sh
RUN chmod 755 /etc/supervisor/conf.d/run_novnc.sh

# Web VNC (noVNC) v0.6.1.
# NOTE: this is a custom version from Doro Wu (fcwu.tw@gmail.com).
# TODO: Check differences and maybe move to 0.6.2
COPY files/noVNC.tar.gz /usr/lib/
RUN cd /usr/lib/ && tar -zxvf noVNC.tar.gz
COPY files/index.html /usr/lib/noVNC

RUN apt-get install -y net-tools

# Supervisord configuration
COPY files/supervisord_novnc.conf /etc/supervisor/conf.d/

# X environment setup/startup
RUN apt-get install fluxbox -y
COPY files/xstartup /opt/tigervnc/
RUN chmod 755 /opt/tigervnc/xstartup

# Prepare for logs
RUN mkdir /home/lofar/.logs && chown lofar:lofar /home/lofar/.logs

# Add fluxbox customisations
COPY files/dot_fluxbox /home/lofar/.fluxbox
RUN chown -R lofar:lofar /home/lofar/.fluxbox
COPY files/background.jpg /usr/share/images/fluxbox/background.jpg

# Rename lofar home folder as a "vanilla" home folder
RUN mv /home/lofar /lofar_home_vanilla

# Give write access to anyone to the home folder so the entrypoint will be able
# to copy over the /home/matauser_vanilla into /home/lofar (for Singularity)
RUN chmod 777 /home


#----------------------
+114 −38
Original line number Diff line number Diff line
#!/bin/bash

# Exit on any error. More complex thing could be done in future
# Exit on any error. More complex stuff could be done in future
# (see https://stackoverflow.com/questions/4381618/exit-a-script-on-error)
set -e


if [ "x$SAFE_MODE" == "xTrue" ]; then

    echo ""
    echo "[INFO] Not executing entrypoint as we are in safe mode, just opening a Bash shell."
    exec /bin/bash

else

    echo ""
    echo "[INFO] Executing entrypoint..."
    
#echo "[INFO] Sourcing env in /opt/lofarsoft/lofarinit.sh..."
source /opt/lofarsoft/lofarinit.sh
    if [ "x$GUI" == "xTrue" ]; then
	    if [ "x$BASE_PORT" == "x" ]; then
	        echo "[INFO] No task base port set, will set noVNC port 8590 and VNC port 5900 with desktop id \"0\""  
	    else 
	        echo "[INFO] Task base port set, will set noVNC port $BASE_PORT and noVNC port $(($BASE_PORT+1)) with desktop id \"$(($BASE_PORT-5900+1))\""
	    fi
    fi
    
    #---------------------
    #   Setup home
    #---------------------

    if [ -f "/home/lofar/.initialized" ]; then
        :
    else
        echo "[INFO] Setting up home"
        mkdir -p /home/lofar

        # Copy over vanilla home contents
        for x in /lofar_home_vanilla/* /lofar_home_vanilla/.[!.]* /lofar_home_vanilla/..?*; do
            if [ -e "$x" ]; then cp -a "$x" /home/lofar/; fi
        done
        
        # Mark as initialized
        touch /home/lofar/.initialized
    fi
    

    #---------------------
    #   Save env
    #---------------------
    echo "[INFO] Dumping env"
    
    # Save env vars for later usage (e.g. ssh)
    
    env | \
    while read env_var; do
      if [[ $env_var == HOME\=* ]]; then
          : # Skip HOME var
      elif [[ $env_var == PWD\=* ]]; then
          : # Skip PWD var
      else
          echo "export $env_var" >> /tmp/env.sh
      fi
    done
    
    #---------------------
    #   VNC Password
    #---------------------
    if [ "x$GUI" == "xTrue" ]; then
	    if [ "x$AUTH_PASS" != "x" ]; then
	        echo "[INFO] Setting up VNC password..."
	        mkdir -p /home/lofar/.vnc
	        /opt/tigervnc/usr/bin/vncpasswd -f <<< $AUTH_PASS > /home/lofar/.vnc/passwd
	        chmod 600 /home/lofar/.vnc/passwd
	        export VNC_AUTH=True
	    else
	        echo "[INFO] Not setting up any VNC password"
	            
	    fi
    fi
    
	echo "[INFO] Creating /tmp/lofarhome to be used as lofar home"
	mkdir /tmp/lofarhome
	
echo "[INFO] Initialising /tmp/lofarhome with configuration files"
cp -aT /home/vanilla_lofar /tmp/lofarhome
	echo "[INFO] Initializing /tmp/lofarhome with configuration files"
	cp -aT /lofar_home_vanilla /tmp/lofarhome
	
	echo "[INFO] Moving to /home/lofar and setting as home"
	cd /home/lofar
@@ -23,15 +91,22 @@ export HOME=/home/lofar
	echo "[INFO] Setting new prompt @$CONTAINER_NAME container"
	echo 'export PS1="${debian_chroot:+($debian_chroot)}\u@$CONTAINER_NAME@\h:\w\$ "' >> /tmp/lofarhome/.bashrc

    echo "[INFO] Sourcing env in /opt/lofarsoft/lofarinit.sh..."
    source /opt/lofarsoft/lofarinit.sh
    	
			
    # Set entrypoint command
	if [ "x$@" == "x" ]; then
	    if [ "x$GUI" == "xTrue" ]; then
            COMMAND="supervisord -c /etc/supervisor/supervisord.conf"
	    else
	        COMMAND="/bin/bash"
	    fi
	else
	    COMMAND="$@"
	fi
	


    # Start!
	echo -n "[INFO] Will execute entrypoint command: "
	echo $COMMAND
@@ -51,3 +126,4 @@ echo ""
	
	exec $COMMAND

fi
+9.96 KiB
Loading image diff...
+4 −0
Original line number Diff line number Diff line
[app] (name=fbrun)
  [Position]	(WINCENTER)	{0 0}
  [Layer]	{2}
[end]
+76 −0
Original line number Diff line number Diff line
session.screen0.tabs.usePixmap:	true
session.screen0.tabs.maxOver:	false
session.screen0.tabs.intitlebar:	true
session.screen0.clientMenu.usePixmap:	true
session.screen0.iconbar.usePixmap:	true
session.screen0.iconbar.iconTextPadding:	10
session.screen0.iconbar.iconWidth:	128
session.screen0.iconbar.alignment:	Relative
session.screen0.iconbar.mode:	{static groups} (workspace)
session.screen0.toolbar.visible:	true
session.screen0.toolbar.height:	0
session.screen0.toolbar.onhead:	1
session.screen0.toolbar.widthPercent:	100
session.screen0.toolbar.alpha:	255
session.screen0.toolbar.maxOver:	false
session.screen0.toolbar.autoHide:	false
session.screen0.toolbar.layer:	Dock
session.screen0.toolbar.placement:	BottomCenter
#session.screen0.toolbar.tools:	prevworkspace, workspacename, nextworkspace, clock, prevwindow, nextwindow, iconbar, systemtray
session.screen0.toolbar.tools: iconbar, systemtray
session.screen0.menu.alpha:	255
session.screen0.tab.placement:	TopLeft
session.screen0.tab.width:	64
session.screen0.titlebar.left:	Stick 
session.screen0.titlebar.right:	Minimize Maximize Close 
session.screen0.window.focus.alpha:	255
session.screen0.window.unfocus.alpha:	255
session.screen0.slit.alpha:	255
session.screen0.slit.maxOver:	false
session.screen0.slit.placement:	RightBottom
session.screen0.slit.autoHide:	false
session.screen0.slit.acceptKdeDockapps:	true
session.screen0.slit.onhead:	0
session.screen0.slit.layer:	Dock
session.screen0.colPlacementDirection:	TopToBottom
session.screen0.tabFocusModel:	ClickToTabFocus
session.screen0.autoRaise:	true
session.screen0.maxDisableMove:	false
session.screen0.edgeSnapThreshold:	10
session.screen0.tooltipDelay:	500
session.screen0.opaqueMove:	true
session.screen0.windowPlacement:	RowMinOverlapPlacement
session.screen0.focusNewWindows:	true
session.screen0.clickRaises:	true
session.screen0.maxDisableResize:	false
session.screen0.windowMenu:	/home/lofar/.fluxbox/windowmenu
session.screen0.allowRemoteActions:	false
session.screen0.strftimeFormat:	%d %b, %a %02k:%M:%S
session.screen0.focusSameHead:	false
session.screen0.workspacewarping:	true
session.screen0.fullMaximization:	false
session.screen0.defaultDeco:	NORMAL
session.screen0.noFocusWhileTypingDelay:	0
session.screen0.menuDelay:	200
session.screen0.workspaceNames:	Workspace 1,Workspace 2,Workspace 3,Workspace 4,
session.screen0.rowPlacementDirection:	LeftToRight
session.screen0.focusModel:	ClickFocus
session.screen0.showwindowposition:	false
session.screen0.maxIgnoreIncrement:	true
session.screen0.workspaces:	1
session.styleOverlay:	/home/lofar/.fluxbox/overlay
session.keyFile:	~/.fluxbox/keys
session.cacheMax:	200
session.tabsAttachArea:	Window
session.slitlistFile:	/home/lofar/.fluxbox/slitlist
session.forcePseudoTransparency:	false
session.tabPadding:	0
session.colorsPerChannel:	4
session.styleFile:	/usr/share/fluxbox/styles//ubuntu-light
session.autoRaiseDelay:	250
session.cacheLife:	5
session.appsFile:	/home/lofar/.fluxbox/apps
session.ignoreBorder:	false
session.configVersion:	13
session.doubleClickInterval:	250
session.menuFile:	~/.fluxbox/menu
Loading