#!/bin/bash SOURCE="${BASH_SOURCE[0]}" while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink TARGET="$(readlink "$SOURCE")" if [[ $TARGET == /* ]]; then SOURCE="$TARGET" else DIR="$( dirname "$SOURCE" )" SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located fi done SRPATH="$( dirname "$SOURCE" )" SFPATH="$( cd -P "$( dirname "$SOURCE" )" && pwd )" if [ "$SFPATH" != "$SRPATH" ]; then RDIR=$SRPATH # relativ path directory fi cwdir=$PWD # EDIT step 1 cat << EOF > $SRPATH/swarmlab-template-image IMAGE_local="microservice-xelatexthesis" IMAGE_origin="hub.swarmlab.io:5480/xelatex-basegui" # Git url for created service GIT_origin="https://git.swarmlab.io:3000/swarmlab/swarmlab-microservice-example.git" # true if service have a GUI service_GUI=true # true if service have a web interface service_WEB=true service_URL=http EOF # EDIT step 2 cat << EOF > $SRPATH/Dockerfile.tmp RUN export DEBIAN_FRONTEND=noninteractive \ && rm -rf /usr/share/doc \ && rm -rf /usr/share/man \ && rm -rf /usr/share/locale \ && mkdir -p /var/run/sshd \ && addgroup -S docker && adduser -S docker -G docker \ && echo 'root:$ROOT_PASSWORD' | chpasswd \ && echo "export VISIBLE=now" >> /etc/profile \ && mkdir -p /home/docker/project \ && mkdir -p /etc/opt \ && echo "docker:docker" | chpasswd \ && echo "StrictHostKeyChecking no" > \${SSHDIR}/config \ && cat \${SSHDIR}/*.pub >> \${SSHDIR}/authorized_keys \ && chmod -R 600 \${SSHDIR}/* \ && chown -R \${USER1}:\${USER1} \${SSHDIR} COPY .vimrc /home/docker RUN /setup.sh EXPOSE 8080 EOF # EDIT step 3 cat << EOF > $SRPATH/files.tmp /bin/cp -rf $SRPATH/cls $Wdir /bin/cp -rf $SRPATH/latex-all $Wdir/latex-all EOF # EDIT step 4 # ############################### # EDIT-BEGIN # # Open Ports you can use # {R_PORT1} - {R_PORT5} # # ############################### cat << EOF > $SRPATH/docker-compose.tmp #ports: # - "\${R_PORT1}:80" # - "\${R_PORT2}:443" networks: - ${HYBRID_NETWORK} volumes: # ############################# # you do not need to edit it # # - $Wdir/project:/home/docker/project # - $Wdir/$bootstrap:/usr/bin/$bootstrap # ############################# - $Wdir/project:/home/docker/project - $Wdir/$bootstrap:/usr/bin/$bootstrap - $Wdir/latex-all:/usr/local/bin/latex-all - $Wdir/docs:/home - /tmp/.X11-unix:/tmp/.X11-unix EOF # EDIT step 5 cat $SRPATH/sec_bootstrap.1 > $SRPATH/sec_bootstrap cat << EOF >> $SRPATH/sec_bootstrap # In Dockerfiles, an ENTRYPOINT instruction is used to set executables that will always run when the container is initiated. # e.g. # # xelatex file.tex # EOF cat $SRPATH/sec_bootstrap.2 >> $SRPATH/sec_bootstrap # EDIT step 6 echo "edit $SRPATH/setup.sh" echo "edit $SRPATH/extrapackages" # EDIT step 7 # if service_GUI=true # cat << EOF > $SRPATH/run-gui.sh # if service_GUI=true # e.g. xhost +local:docker docker exec -e DISPLAY=$DISPLAY microservice-xelatexthesis_masterservice_1 /bin/sh -c "latex-all" # EOF # cd in base directory # . # ├── check-open.sh # ├── images # │   └── swarmlab-network.png # ├── install # │   ├── etc # │   │   ├── bash_completion.d # │   │   │   └── swarmlab-mpi-autocompletion.sh # │   │   └── swarmlab-mpi.sh # │   └── usr # │   └── share # │   └── swarmlab.io # │   └── sec # │   ├── auto_update_hosts # ├── LICENSE # │   └── swarmlab-index.js # └── README.md # # # ######################### RUN ########################### # ./install/usr/share/swarmlab.io/sec/swarmlab-gen.sh # ./install/usr/share/swarmlab.io/sec/swarmlab-sec create # ./install/usr/share/swarmlab.io/sec/swarmlab-sec up # ./install/usr/share/swarmlab.io/sec/swarmlab-sec down # ######################### git push ###########################