79 lines
1.8 KiB
Bash
79 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
: "${DEV:=0}"
|
|
: "${NATS_CONFIG_CHECK_INTERVAL:=1}"
|
|
|
|
if [ "${DEV}" = 1 ]; then
|
|
NATS_CONFIG=/workspace/api/tacticalrmm/nats-rmm.conf
|
|
NATS_API_CONFIG=/workspace/api/tacticalrmm/nats-api.conf
|
|
else
|
|
NATS_CONFIG="${TACTICAL_DIR}/api/nats-rmm.conf"
|
|
NATS_API_CONFIG="${TACTICAL_DIR}/api/nats-api.conf"
|
|
fi
|
|
|
|
sleep 15
|
|
until [ -f "${TACTICAL_READY_FILE}" ]; do
|
|
echo "waiting for init container to finish install or update..."
|
|
sleep 10
|
|
done
|
|
|
|
config_watcher="$(cat << EOF
|
|
while true; do
|
|
sleep ${NATS_CONFIG_CHECK_INTERVAL};
|
|
if [[ ! -z \${NATS_CHECK} ]]; then
|
|
NATS_RELOAD=\$(date -r '${NATS_CONFIG}')
|
|
if [[ \$NATS_RELOAD == \$NATS_CHECK ]]; then
|
|
:
|
|
else
|
|
nats-server --signal reload;
|
|
NATS_CHECK=\$(date -r '${NATS_CONFIG}');
|
|
fi
|
|
else NATS_CHECK=\$(date -r '${NATS_CONFIG}');
|
|
fi
|
|
done
|
|
|
|
EOF
|
|
)"
|
|
|
|
echo "${config_watcher}" > /usr/local/bin/config_watcher.sh
|
|
chmod +x /usr/local/bin/config_watcher.sh
|
|
|
|
supervisor_config="$(cat << EOF
|
|
[supervisord]
|
|
nodaemon=true
|
|
logfile=/tmp/supervisord.log
|
|
pidfile=/tmp/supervisord.pid
|
|
[include]
|
|
files = /etc/supervisor/conf.d/*.conf
|
|
|
|
[program:nats-server]
|
|
command=nats-server --config ${NATS_CONFIG}
|
|
stdout_logfile=/dev/fd/1
|
|
stdout_logfile_maxbytes=0
|
|
redirect_stderr=true
|
|
|
|
[program:config-watcher]
|
|
command=/bin/bash /usr/local/bin/config_watcher.sh
|
|
startsecs=10
|
|
autorestart=true
|
|
startretries=1
|
|
stdout_logfile=/dev/fd/1
|
|
stdout_logfile_maxbytes=0
|
|
redirect_stderr=true
|
|
|
|
[program:nats-api]
|
|
command=/bin/bash -c "/usr/local/bin/nats-api -config ${NATS_API_CONFIG}"
|
|
stdout_logfile=/dev/fd/1
|
|
stdout_logfile_maxbytes=0
|
|
redirect_stderr=true
|
|
|
|
EOF
|
|
)"
|
|
|
|
echo "${supervisor_config}" > /etc/supervisor/conf.d/supervisor.conf
|
|
|
|
# run supervised processes
|
|
/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisor.conf
|