tacticalrmm/docker/containers/tactical-frontend/entrypoint.sh

61 lines
1.7 KiB
Bash

#!/usr/bin/env bash
#
# https://www.freecodecamp.org/news/how-to-implement-runtime-environment-variables-with-create-react-app-docker-and-nginx-7f9d42a91d70/
#
set -e
function check_tactical_ready {
sleep 15
until [ -f "${TACTICAL_READY_FILE}" ]; do
echo "waiting for init container to finish install or update..."
sleep 10
done
}
# Recreate js config file on start
rm -rf ${PUBLIC_DIR}/env-config.js
touch ${PUBLIC_DIR}/env-config.js
nginx_config="$(cat << EOF
server {
listen 8080;
charset utf-8;
location / {
root /usr/share/nginx/html;
try_files \$uri \$uri/ /index.html;
add_header Cache-Control "no-store, no-cache, must-revalidate";
add_header Pragma "no-cache";
}
}
EOF
)"
echo "${nginx_config}" > /etc/nginx/conf.d/default.conf
check_tactical_ready
URL_PATH="${TACTICAL_DIR}/tmp/web_tar_url"
AGENT_BASE=$(grep -o 'AGENT_BASE_URL.*' /tmp/settings.py | cut -d'"' -f 2)
WEB_VERSION=$(grep -o 'WEB_VERSION.*' /tmp/settings.py | cut -d'"' -f 2)
# add dynamic web tar if configured
if [ -f "$URL_PATH" ]; then
START_STRING=$(head -c ${#AGENT_BASE} "$URL_PATH")
if [ "$START_STRING" == "${AGENT_BASE}" ]; then
echo "Attempting to pull dynamic web tar from ${AGENT_BASE}"
webtar="trmm-web-v${WEB_VERSION}.tar.gz"
wget -q $(cat "${URL_PATH}") -O /tmp/${webtar}
tar -xzf /tmp/${webtar} -C /tmp/
rm -rf ${PUBLIC_DIR}/*
mv /tmp/dist/* ${PUBLIC_DIR}
rm -f /tmp/${webtar}
rm -rf /tmp/dist
echo "Success!"
fi
fi
# Add runtime base url assignment
echo "window._env_ = {PROD_URL: \"https://${API_HOST}\"}" > ${PUBLIC_DIR}/env-config.js
chown -R nginx:nginx /etc/nginx && chown -R nginx:nginx ${PUBLIC_DIR}