From a7ae2fb306b1e13ff6789f2bfdb65e238e992d7a Mon Sep 17 00:00:00 2001 From: aleajactaest Date: Tue, 8 Aug 2017 21:13:59 +0200 Subject: [PATCH] adding script to start server and change directory to build --- .gitignore | 3 + .../builder/debian/jessie/i686/Dockerfile | 48 +++ .../debian/jessie/i686/build-under-docker.sh | 41 +++ .../builder/debian/jessie/i686/build.sh | 211 +++++++++++++ .../builder/debian/jessie/x86_64/Dockerfile | 48 +++ .../jessie/x86_64/build-under-docker.sh | 41 +++ .../builder/debian/jessie/x86_64/build.sh | 211 +++++++++++++ dist/docker/server/debian/init-basic.sh | 91 ++++++ dist/docker/server/debian/init-khanat.sh | 258 ++++++++++++++++ .../server/debian/jessie/x86_64/Dockerfile | 35 +++ .../debian/jessie/x86_64/Dockerfile.khanat | 22 ++ .../server/debian/jessie/x86_64/server.sh | 288 ++++++++++++++++++ 12 files changed, 1297 insertions(+) create mode 100644 dist/docker/builder/debian/jessie/i686/Dockerfile create mode 100755 dist/docker/builder/debian/jessie/i686/build-under-docker.sh create mode 100755 dist/docker/builder/debian/jessie/i686/build.sh create mode 100644 dist/docker/builder/debian/jessie/x86_64/Dockerfile create mode 100755 dist/docker/builder/debian/jessie/x86_64/build-under-docker.sh create mode 100755 dist/docker/builder/debian/jessie/x86_64/build.sh create mode 100755 dist/docker/server/debian/init-basic.sh create mode 100755 dist/docker/server/debian/init-khanat.sh create mode 100644 dist/docker/server/debian/jessie/x86_64/Dockerfile create mode 100644 dist/docker/server/debian/jessie/x86_64/Dockerfile.khanat create mode 100755 dist/docker/server/debian/jessie/x86_64/server.sh diff --git a/.gitignore b/.gitignore index eda61148c..31dc96975 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,9 @@ DebugFast ReleaseDebugStatic DebugFastStatic +# Compressed file +*.tar.gz + # Test and application directories screenshots release diff --git a/dist/docker/builder/debian/jessie/i686/Dockerfile b/dist/docker/builder/debian/jessie/i686/Dockerfile new file mode 100644 index 000000000..f8f05c33f --- /dev/null +++ b/dist/docker/builder/debian/jessie/i686/Dockerfile @@ -0,0 +1,48 @@ +# Dockerfile - Build new package server +# Build for server debian-8 (amd64) +# +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Created by : AleaJactaEst + +# to build : +# $ docker build . -t builder_debian_8_i686 --file dist/docker/builder/debian-8-i686/Dockerfile + +# to use this image : +# (on root) +# $ docker run -it --hostname=builder -v $PWD/dist:/opt/dist -v $PWD/code:/opt/code builder_debian_8_i686 /bin/bash +# (with your account) +# $ docker run -it --hostname=builder -u "$(id -u $USERNAME):$(id -g $USERNAME)" -v $PWD/dist:/opt/dist -v $PWD/code:/opt/code builder_debian_8_i686 /bin/bash + +FROM debian:8 +MAINTAINER AleaJactaEst + +ENV HOSTNAME builder + +RUN apt-get update +RUN apt-get dist-upgrade -y + +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server +RUN apt-get install -y apache2 php5 libapache2-mod-php5 php5-mysql apache2-utils php5-gd php5-imagick +RUN apt-get install -y git libcurl4-openssl-dev libluabind-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-turbo-dev rrdtool bison libxmu-dev autoconf automake libmysqlclient-dev libgif-dev cpputest libssl-dev liblzma-dev unzip + +RUN apt-get install -y wget + +## Build & Install cpptest +# Impossible to build release 1.1.0, 1.1.1, 1.1.2 +#RUN apt-get install -y wget autogen autoconf automake libtool libtool-bin +#RUN mkdir -p /opt/src +#RUN wget -q https://github.com/cpptest/cpptest/archive/1.0.5.tar.gz -O /opt/src/cpptest.tar.gz +#RUN rm -rf /opt/src/cpptest +#RUN tar xvf /opt/src/cpptest.tar.gz -C /opt/src --strip 1 +#RUN cd /opt/src/cpptest && ./autogen.sh && ./configure && make && make install + +## Build & Install Build squish +RUN mkdir -p /opt/src +RUN cd /opt/src; wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libsquish/squish-1.11.zip +RUN cd /opt/src; unzip squish-1.11.zip +COPY dist/docker/builder/squish-limit.patch /opt/squish-limit.patch +RUN cd /opt/src/squish-1.11; patch -i /opt/squish-limit.patch +RUN cd /opt/src/squish-1.11; make +RUN cd /opt/src/squish-1.11; make install diff --git a/dist/docker/builder/debian/jessie/i686/build-under-docker.sh b/dist/docker/builder/debian/jessie/i686/build-under-docker.sh new file mode 100755 index 000000000..53eaf4ddc --- /dev/null +++ b/dist/docker/builder/debian/jessie/i686/build-under-docker.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Script to build Khaganat +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Created by : AleaJactaEst + +declare DIRBUILD="/opt/code/build/" +if [[ -n "$1" ]] +then + DIRBUILD="$1" +fi +declare LOGFILE="${DIRBUILD}/build.log" + +function chrashed() +{ + echo "$(date "+%Y/%m/%d %H:%M:%S") BUILD FAILED (code:$?)" >> $LOGFILE + exit 2 +} + +trap chrashed EXIT + +mkdir -p ${DIRBUILD}/ || exit 2 + +if [[ -f ${DIRBUILD}/envi.sh ]] +then + echo "$(date "+%Y/%m/%d %H:%M:%S") LOAD ENVI" >> $LOGFILE + source ${DIRBUILD}/envi.sh +fi + +echo "$(date "+%Y/%m/%d %H:%M:%S") BUILD START" >> $LOGFILE + +cd ${DIRBUILD}; cmake -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF ${CMAKEOPTS} .. 1>>$LOGFILE 2>&1 || exit 2 + +cd ${DIRBUILD}; make $MAKEOPTS 1>>$LOGFILE 2>&1 || exit 2 + +echo "$(date "+%Y/%m/%d %H:%M:%S") PACKAGE" > $LOGFILE +cd ${DIRBUILD}; make package 1>>$LOGFILE 2>&1 || exit 2 + +trap '' EXIT +echo "$(date "+%Y/%m/%d %H:%M:%S") BUILD END" >> $LOGFILE diff --git a/dist/docker/builder/debian/jessie/i686/build.sh b/dist/docker/builder/debian/jessie/i686/build.sh new file mode 100755 index 000000000..587db96af --- /dev/null +++ b/dist/docker/builder/debian/jessie/i686/build.sh @@ -0,0 +1,211 @@ +#!/bin/bash +# +# Script to build under docker +# +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Created by : AleaJactaEst + +declare -i REMOVE=0 +declare -i IMAGE=1 +declare -i BUILD=1 +declare -i DEBUG=0 +declare JOBS="" +declare CMAKEOPTS="" +declare DIRBUILD="" +declare CLEANDOCKER=0 + +declare IMAGEDOCKER="builder_khanat_jessie_i686" +declare LOCALBUILDDIR="build_linux32" +declare LOCALSRC="debian/jessie/i686" + + +usage() +{ +cat << EOF +usage:$0 [options] + script to build under docker + + Step: + 1) clean old build directory + 2) create image builder + 3) launch build under docker (launch script build-under-docker.sh) + 4) remove docker container with state exited + +options: + -h, --help : Show this help + -d, --debug : Show debug message + -r, --remove : Remove old build repository + -i, --image-only : Just create image (no build) + -b, --build-only : Just build (no create new image) + -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg. + -a OPTS, --add-opts-cmake=OPTS : Adding options on cmake command (before build) + -c, --clean-container : remove all container in state Exited + +Example : + cd [root Khanat directory] + ./build.sh -c -r + ./build.sh -c -r -j 4 -a '-DWITH_SYMBOLS=ON' -a '-DWITH_RYZOM_TOOLS=OFF' -a '-DWITH_NEL_TOOLS=OFF' +EOF +} + +function msg_debug() +{ + if [[ $DEBUG -ne 0 ]] + then + echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" + fi +} + +function msg_info() +{ + echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" +} + +function msg_error() +{ + echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 +} + +# +# MAIN +# + +calldir="$(dirname $0)" +basedir=$(cd $calldir; pwd) +rootdir="$(dirname $(dirname $(dirname $(dirname $(dirname $(dirname ${basedir}))))))" + +while test $# -gt 0 +do + case "$1" in + -h|--help) + usage + exit 1 + ;; + -d|--debug) + DEBUG=1 + shift + ;; + -c|--clean-container) + CLEANDOCKER=1 + shift + ;; + -r|--remove) + REMOVE=1 + shift + ;; + -i|--image-only) + BUILD=0 + IMAGE=1 + shift + ;; + -b|--build-only) + BUILD=1 + IMAGE=0 + shift + ;; + -j) + shift + # search next argument is value or new argument + if [[ ${1:0:1} == "-" ]] + then + JOBS="-j" + else + JOBS="-j $1" + shift + fi + ;; + --jobs*) + if [[ ${1#*=} == "" ]] + then + JOBS="-j" + else + JOBS="-j ${1#*=}" + fi + shift + ;; + -a) + shift + CMAKEOPTS="$CMAKEOPTS $1" + shift + ;; + --add-opts-cmake=*) + CMAKEOPTS="$CMAKEOPTS ${1#*=}" + shift + ;; + *) + msg_error "options '$1' not recoginze" + usage + exit 1 + ;; + esac +done + +function chrashed() +{ + msg_error "BUILD FAILED (code:$?)" + exit 2 +} + +trap chrashed EXIT + +msg_debug "prg: $0" + +docker -v 1>/dev/null +if [[ $? -ne 0 ]] +then + echo "*** ERROR docker not installed" + exit 2 +fi + +DIRBUILD="${rootdir}/code/${LOCALBUILDDIR}" + +msg_debug "calldir: $calldir" +msg_debug "basedir: $basedir" +msg_debug "rootdir: $rootdir" +msg_debug "JOBS: '$JOBS'" +msg_debug "CMAKEOPTS: '$CMAKEOPTS'" + +mkdir -p "${DIRBUILD}" +if [[ $REMOVE -ne 0 ]] +then + msg_info "REMOVE OLD BUILD" + rm -rf ${DIRBUILD}/* || exit 2 +fi + +touch ${DIRBUILD}/build.log + +cat << EOF > ${DIRBUILD}/envi.sh +#!/bin/bash +export MAKEOPTS="$JOBS" +export CMAKEOPTS="$CMAKEOPTS" +EOF + +if [[ $IMAGE -ne 0 ]] +then + msg_info "GENERATE DOCKER IMAGE" + cd $rootdir; docker build . -t ${IMAGEDOCKER} \ + --file "${basedir}/Dockerfile" || exit 2 +fi + +if [[ $BUILD -ne 0 ]] +then + msg_info "BUILD" + cd $rootdir; docker run -it \ + --hostname=builder \ + -u "$(id -u $USERNAME):$(id -g $USERNAME)" \ + -v $rootdir/dist:/opt/dist \ + -v $rootdir/code:/opt/code \ + ${IMAGEDOCKER} \ + /opt/dist/docker/builder/${LOCALSRC}/build-under-docker.sh "/opt/code/${LOCALBUILDDIR}/" || exit 2 +fi + +if [[ $CLEANDOCKER -ne 0 ]] +then + msg_info "CLEAN CONTAINER" + docker rm --force `docker ps -qf 'status=exited' -f "ancestor=${IMAGEDOCKER}"` || exit 2 +fi + +trap '' EXIT +msg_info "END" diff --git a/dist/docker/builder/debian/jessie/x86_64/Dockerfile b/dist/docker/builder/debian/jessie/x86_64/Dockerfile new file mode 100644 index 000000000..e9ccb1fb7 --- /dev/null +++ b/dist/docker/builder/debian/jessie/x86_64/Dockerfile @@ -0,0 +1,48 @@ +# Dockerfile - Build new package server +# Build for server debian-8 (amd64) +# +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Created by : AleaJactaEst + +# to build : +# $ docker build . -t builder_debian_8_adm64 --file dist/docker/builder/debian-8-amd64/Dockerfile + +# to use this image : +# (on root) +# $ docker run -it --hostname=builder -v $PWD/dist:/opt/dist -v $PWD/code:/opt/code builder_debian_8_adm64 /bin/bash +# (with your account) +# $ docker run -it --hostname=builder -u "$(id -u $USERNAME):$(id -g $USERNAME)" -v $PWD/dist:/opt/dist -v $PWD/code:/opt/code builder_debian_8_adm64 /bin/bash + +FROM amd64/debian:8 +MAINTAINER AleaJactaEst + +ENV HOSTNAME builder + +RUN apt-get update +RUN apt-get dist-upgrade + +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server +RUN apt-get install -y apache2 php5 libapache2-mod-php5 php5-mysql apache2-utils php5-gd php5-imagick +RUN apt-get install -y git libcurl4-openssl-dev libluabind-dev libfreetype6-dev libx11-dev libgl1-mesa-dev libxxf86vm-dev libxrandr-dev libxrender-dev libopenal-dev libogg-dev libvorbis-dev libxml2-dev cmake build-essential libpng12-dev libjpeg62-turbo-dev rrdtool bison libxmu-dev autoconf automake libmysqlclient-dev libgif-dev cpputest libssl-dev liblzma-dev unzip + +RUN apt-get install -y wget + +## Build & Install cpptest +# Impossible to build release 1.1.0, 1.1.1, 1.1.2 +#RUN apt-get install -y wget autogen autoconf automake libtool libtool-bin +#RUN mkdir -p /opt/src +#RUN wget -q https://github.com/cpptest/cpptest/archive/1.0.5.tar.gz -O /opt/src/cpptest.tar.gz +#RUN rm -rf /opt/src/cpptest +#RUN tar xvf /opt/src/cpptest.tar.gz -C /opt/src --strip 1 +#RUN cd /opt/src/cpptest && ./autogen.sh && ./configure && make && make install + +## Build & Install Build squish +RUN mkdir -p /opt/src +RUN cd /opt/src; wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libsquish/squish-1.11.zip +RUN cd /opt/src; unzip squish-1.11.zip +COPY dist/docker/builder/squish-limit.patch /opt/squish-limit.patch +RUN cd /opt/src/squish-1.11; patch -i /opt/squish-limit.patch +RUN cd /opt/src/squish-1.11; make +RUN cd /opt/src/squish-1.11; make install diff --git a/dist/docker/builder/debian/jessie/x86_64/build-under-docker.sh b/dist/docker/builder/debian/jessie/x86_64/build-under-docker.sh new file mode 100755 index 000000000..53eaf4ddc --- /dev/null +++ b/dist/docker/builder/debian/jessie/x86_64/build-under-docker.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Script to build Khaganat +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Created by : AleaJactaEst + +declare DIRBUILD="/opt/code/build/" +if [[ -n "$1" ]] +then + DIRBUILD="$1" +fi +declare LOGFILE="${DIRBUILD}/build.log" + +function chrashed() +{ + echo "$(date "+%Y/%m/%d %H:%M:%S") BUILD FAILED (code:$?)" >> $LOGFILE + exit 2 +} + +trap chrashed EXIT + +mkdir -p ${DIRBUILD}/ || exit 2 + +if [[ -f ${DIRBUILD}/envi.sh ]] +then + echo "$(date "+%Y/%m/%d %H:%M:%S") LOAD ENVI" >> $LOGFILE + source ${DIRBUILD}/envi.sh +fi + +echo "$(date "+%Y/%m/%d %H:%M:%S") BUILD START" >> $LOGFILE + +cd ${DIRBUILD}; cmake -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_NEL=ON -DWITH_STATIC=ON -DWITH_STATIC_DRIVERS=ON -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF ${CMAKEOPTS} .. 1>>$LOGFILE 2>&1 || exit 2 + +cd ${DIRBUILD}; make $MAKEOPTS 1>>$LOGFILE 2>&1 || exit 2 + +echo "$(date "+%Y/%m/%d %H:%M:%S") PACKAGE" > $LOGFILE +cd ${DIRBUILD}; make package 1>>$LOGFILE 2>&1 || exit 2 + +trap '' EXIT +echo "$(date "+%Y/%m/%d %H:%M:%S") BUILD END" >> $LOGFILE diff --git a/dist/docker/builder/debian/jessie/x86_64/build.sh b/dist/docker/builder/debian/jessie/x86_64/build.sh new file mode 100755 index 000000000..e351ee70f --- /dev/null +++ b/dist/docker/builder/debian/jessie/x86_64/build.sh @@ -0,0 +1,211 @@ +#!/bin/bash +# +# Script to build under docker +# +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Created by : AleaJactaEst + +declare -i REMOVE=0 +declare -i IMAGE=1 +declare -i BUILD=1 +declare -i DEBUG=0 +declare JOBS="" +declare CMAKEOPTS="" +declare DIRBUILD="" +declare CLEANDOCKER=0 + +declare IMAGEDOCKER="builder_khanat_jessie_x86_64" +declare LOCALBUILDDIR="build_linux64" +declare LOCALSRC="debian/jessie/x86_64" + + +usage() +{ +cat << EOF +usage:$0 [options] + script to build under docker + + Step: + 1) clean old build directory + 2) create image builder + 3) launch build under docker (launch script build-under-docker.sh) + 4) remove docker container with state exited + +options: + -h, --help : Show this help + -d, --debug : Show debug message + -r, --remove : Remove old build repository + -i, --image-only : Just create image (no build) + -b, --build-only : Just build (no create new image) + -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg. + -a OPTS, --add-opts-cmake=OPTS : Adding options on cmake command (before build) + -c, --clean-container : remove all container in state Exited + +Example : + cd [root Khanat directory] + ./build.sh -c -r + ./build.sh -c -r -j 4 -a '-DWITH_SYMBOLS=ON' -a '-DWITH_RYZOM_TOOLS=OFF' -a '-DWITH_NEL_TOOLS=OFF' +EOF +} + +function msg_debug() +{ + if [[ $DEBUG -ne 0 ]] + then + echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" + fi +} + +function msg_info() +{ + echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" +} + +function msg_error() +{ + echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 +} + +# +# MAIN +# + +calldir="$(dirname $0)" +basedir=$(cd $calldir; pwd) +rootdir="$(dirname $(dirname $(dirname $(dirname $(dirname $(dirname ${basedir}))))))" + +while test $# -gt 0 +do + case "$1" in + -h|--help) + usage + exit 1 + ;; + -d|--debug) + DEBUG=1 + shift + ;; + -c|--clean-container) + CLEANDOCKER=1 + shift + ;; + -r|--remove) + REMOVE=1 + shift + ;; + -i|--image-only) + BUILD=0 + IMAGE=1 + shift + ;; + -b|--build-only) + BUILD=1 + IMAGE=0 + shift + ;; + -j) + shift + # search next argument is value or new argument + if [[ ${1:0:1} == "-" ]] + then + JOBS="-j" + else + JOBS="-j $1" + shift + fi + ;; + --jobs*) + if [[ ${1#*=} == "" ]] + then + JOBS="-j" + else + JOBS="-j ${1#*=}" + fi + shift + ;; + -a) + shift + CMAKEOPTS="$CMAKEOPTS $1" + shift + ;; + --add-opts-cmake=*) + CMAKEOPTS="$CMAKEOPTS ${1#*=}" + shift + ;; + *) + msg_error "options '$1' not recoginze" + usage + exit 1 + ;; + esac +done + +function chrashed() +{ + msg_error "BUILD FAILED (code:$?)" + exit 2 +} + +trap chrashed EXIT + +msg_debug "prg: $0" + +docker -v 1>/dev/null +if [[ $? -ne 0 ]] +then + echo "*** ERROR docker not installed" + exit 2 +fi + +DIRBUILD="${rootdir}/code/${LOCALBUILDDIR}" + +msg_debug "calldir: $calldir" +msg_debug "basedir: $basedir" +msg_debug "rootdir: $rootdir" +msg_debug "JOBS: '$JOBS'" +msg_debug "CMAKEOPTS: '$CMAKEOPTS'" + +mkdir -p "${DIRBUILD}" +if [[ $REMOVE -ne 0 ]] +then + msg_info "REMOVE OLD BUILD" + rm -rf ${DIRBUILD}/* || exit 2 +fi + +touch ${DIRBUILD}/build.log + +cat << EOF > ${DIRBUILD}/envi.sh +#!/bin/bash +export MAKEOPTS="$JOBS" +export CMAKEOPTS="$CMAKEOPTS" +EOF + +if [[ $IMAGE -ne 0 ]] +then + msg_info "GENERATE DOCKER IMAGE" + cd $rootdir; docker build . -t ${IMAGEDOCKER} \ + --file "${basedir}/Dockerfile" || exit 2 +fi + +if [[ $BUILD -ne 0 ]] +then + msg_info "BUILD" + cd $rootdir; docker run -it \ + --hostname=builder \ + -u "$(id -u $USERNAME):$(id -g $USERNAME)" \ + -v $rootdir/dist:/opt/dist \ + -v $rootdir/code:/opt/code \ + ${IMAGEDOCKER} \ + /opt/dist/docker/builder/${LOCALSRC}/build-under-docker.sh "/opt/code/${LOCALBUILDDIR}/" || exit 2 +fi + +if [[ $CLEANDOCKER -ne 0 ]] +then + msg_info "CLEAN CONTAINER" + docker rm --force `docker ps -qf 'status=exited' -f "ancestor=${IMAGEDOCKER}"` || exit 2 +fi + +trap '' EXIT +msg_info "END" diff --git a/dist/docker/server/debian/init-basic.sh b/dist/docker/server/debian/init-basic.sh new file mode 100755 index 000000000..ca66561ff --- /dev/null +++ b/dist/docker/server/debian/init-basic.sh @@ -0,0 +1,91 @@ +#!/bin/bash +# +# + +echo "Start Basic" + +DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server +apt-get install -y apache2 php5 libapache2-mod-php5 php5-mysql apache2-utils php5-gd php5-imagick rrdtool screen mcrypt php5-mcrypt + +/usr/bin/mysql_install_db --user=mysql --skip-name-resolve || exit 2 + +# Start the MySQL daemon in the background. +/usr/sbin/mysqld & +mysql_pid=$! + +until /usr/bin/mysqladmin ping >/dev/null 2>&1 +do + echo -n "." + sleep 1 +done + +# Initialize password root (to empty) +/usr/bin/mysqladmin -u root password '' || exit 2 + +DEBIAN_FRONTEND=noninteractive apt-get install -y phpmyadmin + +ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf || exit 2 +a2enconf phpmyadmin.conf || exit 2 +cp /etc/phpmyadmin/config.inc.php /etc/phpmyadmin/config.inc.php.ref || exit 2 +awk '{if($0 ~ /AllowNoPassword/){$1="";}; print $0;}' /etc/phpmyadmin/config.inc.php.ref > /etc/phpmyadmin/config.inc.php || exit 2 + + +# Stop MySQL +/usr/bin/mysqladmin shutdown + +# Wait MySQL stop +wait $mysql_pid + +# Initialize bashrc (for root) +cat << EOF > /root/.bashrc +# bashrc: executed by bash(1) for non-login shells. + +# You may uncomment the following lines if you want 'ls' to be colorized: +export SHELL=/bin/bash +export LS_OPTIONS='--color=auto' +eval "\`dircolors\`" +alias ls='ls \$LS_OPTIONS' +alias ll='ls \$LS_OPTIONS -l' +alias l='ls \$LS_OPTIONS -lA' + +# Some more alias to avoid making mistakes: +# alias rm='rm -i' +# alias cp='cp -i' +# alias mv='mv -i' + +# Autocompletion +if [ -f /etc/bash_completion ]; then + . /etc/bash_completion +fi +EOF + + +cat << EOF > /home/compil/.bashrc +# bashrc: executed by bash(1) for non-login shells. + +# You may uncomment the following lines if you want 'ls' to be colorized: +export SHELL=/bin/bash +export LS_OPTIONS='--color=auto' +eval "\`dircolors\`" +alias ls='ls \$LS_OPTIONS' +alias ll='ls \$LS_OPTIONS -l' +alias l='ls \$LS_OPTIONS -lA' + +# Some more alias to avoid making mistakes: +# alias rm='rm -i' +# alias cp='cp -i' +# alias mv='mv -i' + +# Autocompletion +if [ -f /etc/bash_completion ]; then + . /etc/bash_completion +fi +EOF +chown compil:compil /home/compil/.bashrc + +cat << EOF > /etc/sudoers.d/compil +# User privilege specification +compil ALL=NOPASSWD: ALL +EOF + +echo "End Basic" diff --git a/dist/docker/server/debian/init-khanat.sh b/dist/docker/server/debian/init-khanat.sh new file mode 100755 index 000000000..e07bfaa02 --- /dev/null +++ b/dist/docker/server/debian/init-khanat.sh @@ -0,0 +1,258 @@ +#!/bin/bash + +# /opt/dist/docker/server/init-khanat.sh + +# install new package +cd /; tar xvzf /opt/ryzomcore.tar.gz --strip 1 || exit 2 +cd /opt; tar xvzf ryzom-ressources.tar.gz || exit 2 + +# configure environment +cat << EOF > /opt/shard.sh +export RYHOME=/home/compil +export RYZOM_PATH=/home/compil/ryzom +export PATH=$PATH:/usr/local/bin:$RYZOM_PATH/tools/scripts/linux +export RYDATA=/home/compil/khanat-ressources +echo "Environment loaded" +EOF + +# configure environment +cat << EOF > /home/compil/.bashrc +export RYHOME=/home/compil +export RYZOM_PATH=/home/compil/ryzom +export PATH=$PATH:/usr/local/bin:$RYZOM_PATH/tools/scripts/linux +export RYDATA=/home/compil/khanat-ressources +echo "Environment loaded" +EOF + +# load environment +source /opt/shard.sh +mkdir -p $RYHOME $RYZOM_PATH $PATH || exit 2 + +mkdir -p $RYDATA/ressources +(cd $RYDATA; tar xvzf /opt/khanat-ressources.tar.gz) || exit 2 +#cp -r /opt/ressources $RYDATA || exit 2 + +mkdir -p $RYZOM_PATH/tools/scripts/linux +cp -r /opt/code/ryzom/tools/scripts/linux/* $RYZOM_PATH/tools/scripts/linux || exit 2 + +# configure ryzom +mkdir -p $RYZOM_PATH/server || exit 2 +cp -r /opt/code/ryzom/common/ $RYZOM_PATH/common || exit 2 +cp -r /opt/code/ryzom/client/ $RYZOM_PATH/client || exit 2 +cp /opt/code/ryzom/server/*.cfg $RYZOM_PATH/server/. || exit 2 +sed -i -r 's/(FSListenHost)(.*)(=)(.*)(;)/FSListenHost = "localhost";/g' $RYZOM_PATH/server/frontend_service.cfg || exit 2 +sed -i -r 's/(DBHost)(.*)(=)(.*)(;)/DBHost = "localhost";/g' $RYZOM_PATH/server/sql.cfg || exit 2 +sed -i -r 's/(DBRingName)(.*)(=)(.*)(;)/ DBRingName = "ring_mini01";/g' $RYZOM_PATH/server/sql.cfg || exit 2 + +# install web ryzom +cp -r /opt/code/web $RYZOM_PATH/ryzomweb || exit 2 + +chmod -R a+w $RYZOM_PATH/ryzomweb || exit 2 +chown -R www-data:www-data $RYZOM_PATH/ryzomweb || exit 2 + +# configure apache +cat << EOF > /etc/apache2/sites-available/000-default.conf + + + Options Indexes FollowSymLinks + AllowOverride None + Require all granted + DirectoryIndex index.php + AddType text/html .php .phps + AddHandler application/x-httpd-php .php + AddHandler application/x-httpd-php-source .phps + + ServerName lirria.khaganat.net + + ServerAdmin webmaster@localhost + DocumentRoot $RYZOM_PATH/ryzomweb/public_php/ + + ErrorLog \${APACHE_LOG_DIR}/error.log + CustomLog \${APACHE_LOG_DIR}/access.log combined + + + + + Options Indexes FollowSymLinks + AllowOverride None + Require all granted + + ServerName lirria.khaganat.net + + ServerAdmin admin@localhost + DocumentRoot $RYZOM_PATH/ryzomweb/public_php + + ErrorLog \${APACHE_LOG_DIR}/error.log + CustomLog \${APACHE_LOG_DIR}/access.log combined + +EOF + +cat << EOF > /etc/apache2/ports.conf +# If you just change the port or add more ports here, you will likely also +# have to change the VirtualHost statement in +# /etc/apache2/sites-enabled/000-default.conf + +Listen 80 +Listen 40916 + + + Listen 443 + + + + Listen 443 + + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet +EOF + +# start/restart service mysql & apache +service mysql restart || exit 2 +service apache2 restart || exit 2 + +mysql -u root -e "CREATE USER 'shard'@'localhost' IDENTIFIED BY '';" || exit 2 +mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'shard'@'localhost' WITH GRANT OPTION;" || exit 2 + +# launch web configuration for ryzom +# -H 'Accept-Encoding: gzip, deflate' +curl 'http://localhost:40916/setup/install.php' \ + -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \ + -H 'Accept-Language: en-US' \ + -H 'Connection: keep-alive' \ + -H 'Cookie: PHPSESSID=9jr1ssig58929bp777nrj2fa92' \ + -H 'DNT: 1' \ + -H 'Host: localhost:40916' \ + -H 'Referer: http://localhost:40916/setup/install.php' \ + -H 'Upgrade-Insecure-Requests: 1' \ + -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0' \ + -H 'Content-Type: application/x-www-form-urlencoded' \ + --data 'roleService=on'\ +'&roleSupport=on'\ +'&roleDomain=on'\ +'&privatePhpDirectory=..%2Fprivate_php%2F'\ +'&nelSetupPassword=admin'\ +'&nelSqlHostname=localhost'\ +'&nelSqlUsername=root'\ +'&nelSqlPassword='\ +'&nelDatabase=nel'\ +'&toolDatabase=nel_tool'\ +'&toolsAdminUsername=admin'\ +'&toolsAdminPassword=admin'\ +'&amsSqlHostname=localhost'\ +'&amsSqlUsername=root'\ +'&amsSqlPassword='\ +'&amsDatabase=nel_ams'\ +'&amsLibDatabase=nel_ams_lib'\ +'&amsAdminUsername=admin'\ +'&amsAdminPassword=admin'\ +'&nelDomainName=mini01'\ +'&domainDatabase=ring_mini01'\ +'&submit=Configure' \ + -o /opt/setup.log || exit 2 + +grep "Domain role successfully installed" /opt/setup.log >/dev/null || exit 2 + +# create link resource +# Les dossiers : +ln -s $RYDATA/collisions $RYZOM_PATH/server/ +ln -s $RYDATA/leveldesign $RYZOM_PATH/server/ +ln -s $RYDATA/primitives $RYZOM_PATH/server/ +ln -s $RYDATA/translation $RYZOM_PATH/server/ +ln -s $RYDATA/continents $RYZOM_PATH/server/ +ln -s $RYDATA/common $RYZOM_PATH/server/ + +# Les fichiers : +mkdir -p $RYZOM_PATH/server/data_shard +cp -r /opt/code/ryzom/server/data_shard/* $RYZOM_PATH/server/data_shard/. +ln -s $RYDATA/shard/su/dev_gm_names.xml $RYZOM_PATH/server/data_shard/dev_gm_names.xml +ln -s $RYDATA/shard/su/invalid_entity_names.txt $RYZOM_PATH/server/data_shard/invalid_entity_names.txt +ln -s $RYDATA/shard/su/reserved_names.xml $RYZOM_PATH/server/data_shard/reserved_names.xml +ln -s $RYDATA/shard/egs/game_event.txt $RYZOM_PATH/server/data_shard/game_event.txt +ln -s $RYDATA/shard/egs/mission_queues.txt $RYZOM_PATH/server/data_shard/mission_queues.txt +ln -s $RYDATA/shard/egs/named_items.txt $RYZOM_PATH/server/data_shard/named_items.txt + +mkdir -p $RYDATA/mirror_sheets +cp -r /opt/code/ryzom/server/data_shard/mirror_sheets/* $RYDATA/mirror_sheets + +cd /usr/local; /usr/local/bin/make_sheet_id \ + -c/usr/local/etc/nel/make_sheet_id.cfg \ + -o$RYDATA/leveldesign/game_elem/sheet_id.bin \ + $RYDATA/leveldesign/game_elem \ + $RYDATA/leveldesign/game_element \ + $RYDATA/leveldesign/world \ + $RYDATA/leveldesign/ecosystems \ + $RYDATA/sound \ + $RYDATA/mirror_sheets || exit 2 + +rm -rf /opt/sheets_packer/* +mkdir -p /opt/sheets_packer/common /opt/sheets_packer/khanat-ressources /opt/sheets_packer/client +cat << EOF > /opt/sheets_packer/sheets_packer.cfg +///////////////////////////////// +///////////////////////////////// +/// SHEETS PACKER CONFIG FILE /// +///////////////////////////////// +///////////////////////////////// +DataPath = { "/opt/sheets_packer/common/data_leveldesign", + "/opt/sheets_packer/common/data_common", + "/opt/sheets_packer/client/data", + "/opt/sheets_packer/khanat-ressources/common", + "/opt/sheets_packer/khanat-ressources/leveldesign", + "/opt/sheets_packer/khanat-ressources/primitives" }; +WorldSheet = "ryzom.world"; +PrimitivesPath = "/opt/sheets_packer/khanat-ressources/primitives"; +OutputDataPath = "/opt/sheets_packer/client/data"; +LigoPrimitiveClass = "world_editor_classes.xml"; +DumpVisualSlotsIndex = 1; +EOF + +cp -r /opt/code/ryzom/common/* /opt/sheets_packer/common || exit 2 +cp -r $RYDATA/* /opt/sheets_packer/khanat-ressources || exit 2 +cp -r /opt/code/ryzom/client/* /opt/sheets_packer/client || exit 2 +cd /opt/sheets_packer; sheets_packer 1>/opt/sheets_packer/sheets_packer.log 2>/opt/sheets_packer/sheets_packer.err || exit 2 +cp /opt/sheets_packer/visual_slot.tab $RYZOM_PATH/common/data_common/visual_slot.tab || exit 2 + +cp /opt/sheets_packer/visual_slot.tab $RYZOM_PATH/client/data/visual_slot.tab || exit 2 + + +for var in $RYDATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_de}; done +for var in $RYDATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_es}; done +for var in $RYDATA/translation/translated/*_wk.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_ru}; done + +cp /opt/code/ryzom/server/shard.screen.rc $RYZOM_PATH/server/shard.screen.rc +ln -s /usr/local /home/compil/build + +/etc/init.d/ssh restart + +cp /usr/local/sbin/* /usr/local/bin +cat << EOF +source /opt/shard.sh +/home/compil/ryzom/tools/scripts/linux/shard +EOF + +cat << EOF > /opt/autostart.sh +#!/bin/bash +/etc/init.d/mysql restart +/etc/init.d/apache2 restart +/etc/init.d/ssh restart +source /opt/shard.sh +/home/compil/ryzom/tools/scripts/linux/shard start +EOF + +chmod +x /opt/autostart.sh + +mkdir -p $RYZOM_PATH/server/save_shard/rrd_graphs + + +## See on https://ryzomcore.atlassian.net/wiki/display/RC/Configure+Linux+Web+Services +#mkdir -p $RYZOM_PATH/tools/server/admin/graphs_output +#mkdir -p $RYZOM_PATH/tools/server/admin/templates/default_c +#mkdir -p $RYZOM_PATH/tools/server/www/login/logs +#mkdir -p $RYZOM_PATH/tools/server/ryzom_ams/www/ +#mkdir -p $RYZOM_PATH/tools/server/ryzom_ams/www/html/cache +#mkdir -p $RYZOM_PATH/tools/server/ryzom_ams/www/html/templates_c +#shard + + +/etc/init.d/ssh stop || exit 2 +service apache2 stop|| exit 2 +service mysql stop || exit 2 diff --git a/dist/docker/server/debian/jessie/x86_64/Dockerfile b/dist/docker/server/debian/jessie/x86_64/Dockerfile new file mode 100644 index 000000000..d7e085a37 --- /dev/null +++ b/dist/docker/server/debian/jessie/x86_64/Dockerfile @@ -0,0 +1,35 @@ +# Dockerfile - Build new package server +# Build for server debian-8 (amd64) +# +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Createryzomwebd by : AleaJactaEst + +FROM amd64/debian:8 +MAINTAINER AleaJactaEst + +ENV HOSTNAME basic_server + +RUN apt-get update +RUN apt-get dist-upgrade -y + +RUN apt-get install -y curl nano vim less bash-completion cron logrotate bsd-mailx +RUN apt-get install -y openssh-server sudo net-tools + +# adding account compil, password compil +RUN useradd -G sudo,www-data -c /home -d /home/compil -c "Khanat account" -m -p '$6$cQrN51jJ$eP/whHzKesStKm8KgQwZMb.kYdPzJm2RtG7FcESQtrrioyOiDslE4jxnuz4WieMIvW8saPdnj3vOy1s/cnfVy.' -s /bin/bash -U compil + + +COPY dist/docker/server/debian/init-basic.sh /opt/ + +#COPY code/build_linux64/ryzomcore*.tar.gz /opt/. +#COPY code/build_linux64/ryzom-ressources.tar.gz /opt/. +#COPY khanat-ressources.tar.gz /opt/ +#COPY dist/docker/server/debian/init-khanat.sh /opt/ + +RUN /opt/init-basic.sh +#RUN /opt/init-khanat.sh + + + diff --git a/dist/docker/server/debian/jessie/x86_64/Dockerfile.khanat b/dist/docker/server/debian/jessie/x86_64/Dockerfile.khanat new file mode 100644 index 000000000..304301ad9 --- /dev/null +++ b/dist/docker/server/debian/jessie/x86_64/Dockerfile.khanat @@ -0,0 +1,22 @@ +# Dockerfile - Build new package server +# Build for server debian-8 (amd64) +# +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Createryzomwebd by : AleaJactaEst + +FROM server_generic_debian_8_x86_64 +MAINTAINER AleaJactaEst + +ENV HOSTNAME khanat_server + +COPY dist/docker/server/debian/init-khanat.sh /opt/ +COPY ryzomcore.tar.gz /opt/ +COPY ryzom-ressources.tar.gz /opt/ +COPY khanat-ressources.tar.gz /opt/ + +RUN /opt/init-khanat.sh + + + diff --git a/dist/docker/server/debian/jessie/x86_64/server.sh b/dist/docker/server/debian/jessie/x86_64/server.sh new file mode 100755 index 000000000..9ba8cd0ea --- /dev/null +++ b/dist/docker/server/debian/jessie/x86_64/server.sh @@ -0,0 +1,288 @@ +#!/bin/bash +# +# Script to start khanat server +# +# Copyright : GNU/AGPLv3 +# +# Created : 1 AUG 2017 +# Created by : AleaJactaEst + +declare -i IMAGE=1 +declare -i BASICSERVER=0 +declare -i KHANATSERVER=0 +declare -i KHANATRESSOURCES=0 +declare -i RYZOMRESSOURCES=0 +declare -i LAUNCHKHANAT=1 +declare -i DEBUG=0 +declare -i AUTODETEC=1 +declare -i STOPKHANAT=0 +declare -i CLEANCONTAINERKHANAT=0 +declare -i CONNECTSSHKHANAT=0 + +declare IMAGEGENERICSERVER="server_generic_debian_jessie_x86_64" +declare IMAGEKHANATSERVER="server_khanat_debian_jessie_x86_64" +declare LOCALBUILDDIR="build_linux64" + +usage() +{ +cat << EOF +usage:$0 [options] + script to build under docker + + Step: + 1) generate tar with khanat-ressources + 2) generate tar with ryzom-ressources + 3) create image basic server + 4) create image khanat server + 5) launch khanat server + +options: + -h, --help : Show this help + -d, --debug : Show debug message + -b, --force-basic : Force create/recreate image basic server + -t, --force-tar-ressources : Generate TAR.GZ for khanat-ressources (look directory ../khanat-ressources) + -z, --force-tar-ryzom-ressources : Generate TAR.GZ in data khanat-code + -k, --force-khanat : Force create/recreate image khanat server + -n, --no-launch-khanat : Doesn't launch khanat server + -s, --stop-server : Stop server khanat + -c, --clean-container-khanat : Remove old server khanat (stopped) + --ssh : connect on khanat server (with ssh) [Exclusive action, can't execute other action] + +Example : + cd [root Khanat directory] + ./server.sh + ./server.sh -k + ./server.sh --ssh +EOF +} + +function msg_debug() +{ + if [[ $DEBUG -ne 0 ]] + then + echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" + fi +} + +function msg_info() +{ + echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" +} + +function msg_error() +{ + echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 +} + +# +# MAIN +# + +calldir="$(dirname $0)" +basedir=$(cd $calldir; pwd) +rootdir="$(dirname $(dirname $(dirname $(dirname $(dirname $(dirname ${basedir}))))))" +ressourcedir="$(dirname ${rootdir})/khanat-ressources" + +while test $# -gt 0 +do + case "$1" in + -h|--help) + usage + exit 1 + ;; + -d|--debug) + DEBUG=1 + shift + ;; + --ssh) + CONNECTSSHKHANAT=1 + shift + ;; + -c|--clean-container-khanat) + CLEANCONTAINERKHANAT=1 + shift + ;; + -s|--stop-server) + STOPKHANAT=1 + shift + ;; + -b|--force-basic) + BASICSERVER=1 + shift + ;; + -n|--no-launch-khanat) + LAUNCHKHANAT=0 + shift + ;; + -t|--force-tar-ressources) + KHANATRESSOURCES=1 + shift + ;; + -z|--force-tar-ryzom-ressources) + RYZOMRESSOURCES=1 + shift + ;; + -k|--force-khanat) + KHANATSERVER=1 + shift + ;; + *) + msg_error "options '$1' not recoginze" + usage + exit 1 + ;; + esac +done + +function chrashed() +{ + msg_error "BUILD FAILED (code:$?)" + exit 2 +} + +trap chrashed EXIT + +msg_debug "prg: $0" + +docker -v 1>/dev/null +if [[ $? -ne 0 ]] +then + msg_error "docker not installed" + exit 2 +fi + +case "$(uname -m)" in + x86_64) + ;; + i686) + msg_error "Bad Archi" + exit 2 + ;; + *) + msg_error "Unknown archi : $(uname -m)" + exit 2 + ;; +esac + +if [[ $CONNECTSSHKHANAT -ne 0 ]] +then + listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" + if [[ ${#listcontainer[@]} -eq 1 ]] + then + + ipaddress=$(docker inspect --format="{{ .NetworkSettings.IPAddress }}" ${listcontainer[@]}) + ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no compil@$ipaddress + fi + trap '' EXIT + msg_info "END SSH" + exit 0 +fi + +if [[ $AUTODETEC -ne 0 ]] +then + if [[ $(docker images -f "reference=$IMAGEGENERICSERVER" | wc -l) -lt 2 ]] + then + BASICSERVER=1 + fi + if [[ ! -d ${ressourcedir} ]] + then + KHANATRESSOURCES=1 + fi + if [[ ! -f ${rootdir}/ryzom-ressources.tar.gz ]] + then + RYZOMRESSOURCES=1 + fi + if [[ $(docker images -f "reference=$IMAGEKHANATSERVER" | wc -l) -lt 2 ]] + then + KHANATSERVER=1 + fi +fi + +(cd $rootdir; cp ${rootdir}/code/${LOCALBUILDDIR}/ryzomcore-0.12.0..tar.gz ${rootdir}/ryzomcore.tar.gz) || exit 2 + +DIRBUILD="${rootdir}/code/${LOCALBUILDDIR}" + +msg_debug "calldir: $calldir" +msg_debug "basedir: $basedir" +msg_debug "rootdir: $rootdir" +msg_debug "ressourcedir: $ressourcedir" +msg_debug "generate basic image: $BASICSERVER" +msg_debug "generate tar khanat ressources: $KHANATRESSOURCES" +msg_debug "generate tar ryzom ressources: $RYZOMRESSOURCES" +msg_debug "generate khanat image: $KHANATSERVER" +msg_debug "launch khanat: $LAUNCHKHANAT" +msg_debug "stop khanat: $STOPKHANAT" + +if [[ $KHANATRESSOURCES -ne 0 ]] +then + msg_info "$(date "+%Y/%m/%d %H:%M:%S") CREATE TAR with KHANAT Ressources" + if [[ ! -d ${ressourcedir} ]] + then + msg_error "Missing khanat-ressources directory ($ressourcedir)" + exit 2 + fi + (cd $ressourcedir; tar --exclude='.git' -czf ${rootdir}/khanat-ressources.tar.gz .) || exit 2 +fi + +if [[ $RYZOMRESSOURCES -ne 0 ]] +then + msg_info "CREATE TAR with RYZOM Ressources" + if [[ ! -d ${ressourcedir} ]] + then + msg_error "Missing khanat-ressources directory ($ressourcedir)" + exit 2 + fi + cd ${rootdir}; tar czf ryzom-ressources.tar.gz \ + code/ryzom/server/shard.screen.rc \ + code/ryzom/common/* \ + code/ryzom/client/* \ + code/ryzom/server/* \ + code/ryzom/tools/scripts/linux/* \ + code/web/* || exit 2 +fi + +if [[ $STOPKHANAT -ne 0 ]] +then + msg_info "STOP SERVER KHANAT" + listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" + msg_debug "CONTAINER KHANAT UP : ${listcontainer[@]}" + if [[ -n "$listcontainer" ]] + then + docker stop "$listcontainer" || exit 2 + fi +fi + +if [[ $CLEANCONTAINERKHANAT -ne 0 ]] +then + msg_info "CLEAN CONTAINER KHANAT" + listcontainer=( $(docker ps -qf 'status=exited' -f 'ancestor='"${IMAGEKHANATSERVER}"'') ) + msg_debug "CONTAINER KHANAT EXITED : ${listcontainer[@]}" + if [[ -n "${listcontainer[@]}" ]] + then + docker rm --force "${listcontainer[@]}" || exit 2 + fi +fi + +if [[ $BASICSERVER -ne 0 ]] +then + msg_info "GENERATE DOCKER IMAGE BASIC SERVER" + cd $rootdir; docker build . -t ${IMAGEGENERICSERVER} \ + --file "${basedir}/Dockerfile" || exit 2 +fi + +if [[ $KHANATSERVER -ne 0 ]] +then + msg_info "GENERATE DOCKER IMAGE KHANAT SERVER" + ls ${rootdir}/code/${LOCALBUILDDIR}/ryzomcore.tar.gz + cd $rootdir; docker build . -t ${IMAGEKHANATSERVER} \ + --file "${basedir}/Dockerfile.khanat" || exit 2 +fi + +if [[ $LAUNCHKHANAT -ne 0 ]] +then + msg_info "START KHANAT SERVER" + cd $rootdir; docker run -it --hostname=khanat ${IMAGEKHANATSERVER} /opt/autostart.sh +fi + +trap '' EXIT +msg_info "END"