Installation

Als Docker-Anwendung benötigt die GBD WebSuite keine Installation per se, aber Sie müssen ein paar Dinge wissen, um es zum Laufen zu bringen.

Verzeichnisse

Die GBD WebSuite benötigt einige Verzeichnisse, die von Ihrem Host-Rechner eingebunden werden müssen, um die Daten mit der Außenwelt auszutauschen.

  • ein oder mehrere “Daten”-Verzeichnisse. Hier speichern Sie Ihre Konfiguration und Daten. Der Server schreibt nie in diese Verzeichnisse, daher ist es eine gute Idee, sie schreibgeschützt zu mounten. Diese Verzeichnisse können an beliebige Stellen im Container eingebunden werden (wir verwenden standardmäßig /data).
  • das Verzeichnis “var”, in dem der Server seine eigenen persistenten Daten wie Caches und Sitzungsdaten speichert. Es sollte an /gws-var im Container montiert werden.
  • ein temporäres Verzeichnis. Normalerweise würde man es als tmpfs bezeichnen.

Port

Die GBD WebSuite zeigt die Ports “80” und “443” an. Sie können sie auf alles abbilden, was Sie beim Testen wollen, und auf echte 80/443 in der Produktion.

Hauptkonfiguration

Die GBD WebSuite erwartet seine Hauptkonfiguration in /data/config. json. Wenn Sie einen anderen Speicherort und/oder ein anderes Format bevorzugen, setzen Sie die Umgebungsvariable GWS_CONFIG auf den Pfad Ihrer Hauptkonfiguration.

Externe Rechner

Wenn Ihr GBD WebSuite Container externe Verbindungen benötigt (höchstwahrscheinlich zu Datenbankservern), benötigen Sie eine oder mehrere --add-host Optionen in Ihrem Docker-Startbefehl.

Einstiegspunkt

Die GBD WebSuite hat einen einzigen Einstiegspunkt, ein Shell-Skript namens gws. Um den Server zu starten und zu stoppen, möchten Sie einen von diesen

gws server start
gws server stop

Alles zusammensetzen

Also, hier sind Optionen, die Sie in Ihrem docker run Befehl anpassen müssen:

  • eine oder mehrere “Daten”-Einbinden
  • eine “var”-Einbinden
  • eine “tmp”-Einbinden
  • Port-Mappings
  • Konfigurationspfad
  • externe Hosts

Wir haben ein Beispielskript server-sample. sh, das Sie an Ihre Bedürfnisse anpassen können:

#!/usr/bin/env bash

#########################################################
#
# This is a sample startup script for the gws-server
# Refer to the docs for the details
#
#########################################################

# gws version
VERSION='2.3'

# server image
IMAGE=gbdconsult/gws-server:${VERSION}

# your container name
CONTAINER=my-gws-container

# (host) path to your config and projects
DATA_DIR=/var/work/data

# (host) path to the server "var" directory
VAR_DIR=/var/work/gws-var

# (container) path to the main configuration
CONFIG_PATH=/data/config.json

# (public) server http port
HTTP_PORT=3333

# server host
HTTP_HOST=0.0.0.0

# external (e.g. database) host IP
EXTERNAL_IP=172.17.0.1

# external (e.g. database) host name (as used in your projects)
EXTERNAL_HOSTNAME=my.db.server


#########################################################

start_server() {
    docker run \
        --name ${CONTAINER} \
        --env GWS_CONFIG=${CONFIG_PATH} \
        --mount type=bind,src=${DATA_DIR},dst=/data,readonly \
        --mount type=bind,src=${VAR_DIR},dst=/gws-var \
        --mount type=tmpfs,dst=/tmp,tmpfs-mode=1777 \
        --publish ${HTTP_HOST}:${HTTP_PORT}:80 \
        --add-host=${EXTERNAL_HOSTNAME}:${EXTERNAL_IP} \
        --detach \
        --log-driver syslog \
        --log-opt tag=GWS \
        gws-server:${IMAGE} \
        gws server start
}

stop_server() {
    docker exec -it ${CONTAINER} gws server stop
    docker kill --signal SIGINT ${CONTAINER}
    docker rm --force ${CONTAINER}
}

case "$1" in
    start)   start_server ;;
    stop)    stop_server  ;;
    restart) stop_server; start_server ;;
esac