aboutsummaryrefslogtreecommitdiff
path: root/docker/lib
diff options
context:
space:
mode:
authorRafael Römhild <r.roemhild@s-v.de>2016-11-11 00:12:54 +0100
committerChristophe Romain <christophe.romain@process-one.net>2016-11-16 11:48:50 +0100
commit5a01b5f1fc991044920a84bf97959c2e4c21b7d2 (patch)
tree696255307a36e0b0708c30ca82d42834bcfc6940 /docker/lib
parentMinor cosmetic changes on pubsub code (diff)
add docker support
Diffstat (limited to 'docker/lib')
-rw-r--r--docker/lib/base_config.sh22
-rw-r--r--docker/lib/base_functions.sh72
-rw-r--r--docker/lib/config.sh1
-rw-r--r--docker/lib/functions.sh1
4 files changed, 96 insertions, 0 deletions
diff --git a/docker/lib/base_config.sh b/docker/lib/base_config.sh
new file mode 100644
index 000000000..803c1db47
--- /dev/null
+++ b/docker/lib/base_config.sh
@@ -0,0 +1,22 @@
+readonly HOSTIP=$(hostname -i)
+readonly HOSTNAME=$(hostname -f)
+readonly DOMAINNAME=$(hostname -d)
+
+readonly DOCKER_LIB="${EJABBERD_HOME}/docker/lib"
+readonly ERLANGCOOKIEFILE="${EJABBERD_HOME}/.erlang.cookie"
+readonly EJABBERDCTL="/sbin/ejabberdctl"
+readonly CONFIGDIR="${EJABBERD_HOME}/conf"
+readonly CONFIGTMPDIR="${EJABBERD_HOME}/docker/conf"
+readonly SSLCERTDIR="${EJABBERD_HOME}/ssl"
+readonly SSLCERTHOST="${SSLCERTDIR}/host.pem"
+readonly LOGDIR="/var/log/ejabberd"
+readonly FIRST_START_DONE_FILE="${EJABBERD_HOME}/first-start-done"
+readonly CLUSTER_NODE_FILE="${EJABBERD_HOME}/cluster-done"
+
+readonly PYTHON_JINJA2="import os;
+import sys;
+import jinja2;
+sys.stdout.write(
+ jinja2.Template
+ (sys.stdin.read()
+ ).render(env=os.environ))"
diff --git a/docker/lib/base_functions.sh b/docker/lib/base_functions.sh
new file mode 100644
index 000000000..d7bf97266
--- /dev/null
+++ b/docker/lib/base_functions.sh
@@ -0,0 +1,72 @@
+is_set() {
+ local var=$1
+
+ [[ -n $var ]]
+}
+
+
+is_zero() {
+ local var=$1
+
+ [[ -z $var ]]
+}
+
+
+file_exist() {
+ local file=$1
+
+ [[ -e $file ]]
+}
+
+
+is_true() {
+ local var=${1,,}
+ local choices=("yes" "1" "y" "true")
+ for ((i=0;i < ${#choices[@]};i++)) {
+ [[ "${choices[i]}" == $var ]] && return 0
+ }
+ return 1
+}
+
+
+log() {
+ local message=$1
+ echo $message
+}
+
+
+# overwrite this function to get hostname from other sources
+# like dns or etcd
+get_nodename() {
+ log ${HOSTNAME}
+}
+
+
+join_cluster() {
+ local cluster_node=$1
+
+ is_zero ${cluster_node} \
+ && exit 0
+
+ log "Join cluster..."
+
+ local erlang_node_name=${ERLANG_NODE%@*}
+ local erlang_cluster_node="${erlang_node_name}@${cluster_node}"
+
+ response=$(${EJABBERDCTL} ping ${erlang_cluster_node})
+ while [ "$response" != "pong" ]; do
+ log "Waiting for ${erlang_cluster_node}..."
+ sleep 2
+ response=$(${EJABBERDCTL} ping ${erlang_cluster_node})
+ done
+
+ log "Join cluster at ${erlang_cluster_node}... "
+ NO_WARNINGS=true ${EJABBERDCTL} join_cluster $erlang_cluster_node
+
+ if [ $? -eq 0 ]; then
+ touch ${CLUSTER_NODE_FILE}
+ else
+ log "cloud not join cluster"
+ exit 1
+ fi
+}
diff --git a/docker/lib/config.sh b/docker/lib/config.sh
new file mode 100644
index 000000000..6b9cbbb12
--- /dev/null
+++ b/docker/lib/config.sh
@@ -0,0 +1 @@
+# Overridable file
diff --git a/docker/lib/functions.sh b/docker/lib/functions.sh
new file mode 100644
index 000000000..6b9cbbb12
--- /dev/null
+++ b/docker/lib/functions.sh
@@ -0,0 +1 @@
+# Overridable file