#!/bin/bash echo "[*] Starting bunkerized-nginx ..." # trap SIGTERM and SIGINT function trap_exit() { echo "[*] Catched stop operation" echo "[*] Stopping crond ..." pkill -TERM crond echo "[*] Stopping nginx ..." /usr/sbin/nginx -s stop } trap "trap_exit" TERM INT QUIT # trap SIGHUP function trap_reload() { echo "[*] Catched reload operation" if [ "$SWARM_MODE" != "yes" ] ; then /opt/bunkerized-nginx/entrypoint/pre-jobs.sh fi if [ -f /tmp/nginx.pid ] ; then echo "[*] Reloading nginx ..." nginx -s reload if [ $? -eq 0 ] ; then echo "[*] Reload successfull" if [ "$SWARM_MODE" != "yes" ] ; then /opt/bunkerized-nginx/entrypoint/post-jobs.sh fi else echo "[!] Reload failed" fi else echo "[!] Ignored reload operation because nginx is not running" fi } trap "trap_reload" HUP # do the configuration magic if needed if [ ! -f "/etc/nginx/global.env" ] ; then echo "[*] Configuring bunkerized-nginx ..." # check permissions if [ "$SWARM_MODE" != "yes" ] ; then /opt/bunkerized-nginx/entrypoint/permissions.sh else /opt/bunkerized-nginx/entrypoint/permissions-swarm.sh fi if [ "$?" -ne 0 ] ; then exit 1 fi # start temp nginx to solve Let's Encrypt challenges if needed /opt/bunkerized-nginx/entrypoint/nginx-temp.sh # only do config if we are not in swarm mode if [ "$SWARM_MODE" != "yes" ] ; then # export the variables env | grep -E -v "^(HOSTNAME|PWD|PKG_RELEASE|NJS_VERSION|SHLVL|PATH|_|NGINX_VERSION|HOME)=" > "/tmp/variables.env" # call the generator /opt/bunkerized-nginx/gen/main.py --settings /opt/bunkerized-nginx/settings.json --templates /opt/bunkerized-nginx/confs --output /etc/nginx --variables /tmp/variables.env # pre-jobs /opt/bunkerized-nginx/entrypoint/pre-jobs.sh fi else echo "[*] Skipping configuration process" fi # start crond crond # wait until config has been generated if we are in swarm mode if [ "$SWARM_MODE" = "yes" ] ; then echo "[*] Waiting until config has been generated ..." while [ ! -f "/etc/nginx/autoconf" ] ; do sleep 1 done fi # stop temp config if needed if [ -f "/tmp/nginx-temp.pid" ] ; then nginx -c /tmp/nginx-temp.conf -s quit fi # run nginx echo "[*] Running nginx ..." nginx -g 'daemon off;' & pid="$!" # autotest if [ "$1" == "test" ] ; then sleep 10 echo -n "autotest" > /opt/bunkerized-nginx/www/index.html check=$(curl -H "User-Agent: legit" "http://localhost:8080") if [ "$check" == "autotest" ] ; then exit 0 fi exit 1 fi # post jobs /opt/bunkerized-nginx/entrypoint/post-jobs.sh # wait for nginx wait "$pid" while [ -f "/tmp/nginx.pid" ] ; do wait "$pid" done # sigterm trapped echo "[*] bunkerized-nginx stopped" exit 0