You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

172 lines
4.1 KiB

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