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

Added the entrypoint base container.

parent 71ab9fd8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ set -e
cd system && ./build.sh && cd ..
cd extras && ./build.sh && cd ..
cd astro && ./build.sh && cd ..
cd entrypoint && ./build.sh && cd ..

# Use the astro image as lofar base
docker tag lofarit_base_astro lofarit_base
docker tag lofarit_base_entrypoint lofarit_base
+25 −0
Original line number Diff line number Diff line
FROM lofarit_base_astro:latest
MAINTAINER Giuliano Taffoni <giuliano.taffoni@inaf.it>
ENV CONTAINER_NAME='lofarit_base_entrypoint'

#=============================
# Switch to root for install
#=============================
USER root


# Copy entrypoint
COPY entrypoint.sh /

# Give right permissions
RUN chmod 755 /entrypoint.sh

# Set entrypoint
ENTRYPOINT ["/entrypoint.sh"]

#=============================
# Switch to metauser
#=============================

USER metauser
+2 −0
Original line number Diff line number Diff line
#!/bin/bash
docker build ./ -t lofarit_base_entrypoint
+124 −0
Original line number Diff line number Diff line
#!/bin/bash

# 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..."
    
    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/metauser/.initialized" ]; then
        :
    else
        echo "[INFO] Setting up home"
        mkdir -p /home/metauser

        # Copy over vanilla home contents
        for x in /metauser_home_vanilla/* /metauser_home_vanilla/.[!.]* /metauser_home_vanilla/..?*; do
            if [ -e "$x" ]; then cp -a "$x" /home/metauser/; fi
        done
        
        # Mark as initialized
        touch /home/metauser/.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/metauser/.vnc
            /opt/tigervnc/usr/bin/vncpasswd -f <<< $AUTH_PASS > /home/metauser/.vnc/passwd
            chmod 600 /home/metauser/.vnc/passwd
            export VNC_AUTH=True
        else
            echo "[INFO] Not setting up any VNC password"
                
        fi
    fi
    
    echo "[INFO] Creating /tmp/metauserhome to be used as metauser home"
    mkdir /tmp/metauserhome
    
    echo "[INFO] Initializing /tmp/metauserhome with configuration files"
    cp -aT /metauser_home_vanilla /tmp/metauserhome
    
    echo "[INFO] Moving to /home/metauser and setting as home"
    cd /home/metauser
    export HOME=/home/metauser
    
    echo "[INFO] Setting new prompt @$CONTAINER_NAME container"
    echo 'export PS1="${debian_chroot:+($debian_chroot)}\u@$CONTAINER_NAME@\h:\w\$ "' >> /tmp/metauserhome/.bashrc

    echo "[INFO] Sourcing env in /opt/lofar/init.sh..."
    source /opt/lofar/init.sh
          
    # Set entrypoint command
    if [ "x$@" == "x" ]; then
        COMMAND="/bin/bash"
    else
        COMMAND="$@"
    fi
    

    # Start!
    echo -n "[INFO] Will execute entrypoint command: "
    echo $COMMAND
    echo ""
    echo "=============================================================="
    echo ""
    echo "      Welcome to the LOFAR-IT $CONTAINER_NAME container!"
    echo ""
    echo "=============================================================="
    echo ""
    echo "You are now in /home/metauser with write access as user \"$(whoami)\"."
    echo ""
    echo "Remember that contents inside this container, unless stored"
    echo "on a persistent volume mounted from you host machine, will"
    echo "be wiped out when exiting the container."
    echo ""
    
    exec $COMMAND

fi
+11 −0
Original line number Diff line number Diff line
#!/bin/bash
docker pull git.ia2.inaf.it:5050/lofarit/containers/lofarit_base_entrypoint

if [ $? -eq 0 ] 
then 
  echo ""
  echo "Pulled lofarit/containers/lofarit_base_entrypoint. To use it for building other images in this repository, retag it as:"
  echo " $ docker tag git.ia2.inaf.it:5050/lofarit/containers/lofarit_base_entrypoint lofarit_base_entrypoint"
  echo ""
fi
Loading