|
|
|
#!/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 ###########################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|