107 lines
3.2 KiB
Bash
107 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
export USER_ID=${LOWCODER_PUID:=9001}
|
|
export GROUP_ID=${LOWCODER_PGID:=9001}
|
|
|
|
# Set default variable values
|
|
echo "Overriding default environment variables:"
|
|
for line in `grep '^[ \t]*LOWCODER_.*$' /lowcoder/etc/default.env`; do
|
|
VARNAME=`echo ${line} | sed -e 's/^\([A-Z0-9_]\+\)\([ \t]*=[ \t]*\)\(.*\)$/\1/'`
|
|
if [ -z "$(eval echo \"\$$VARNAME\")" ]; then
|
|
export $(eval echo "${line}")
|
|
else
|
|
echo " ${line}"
|
|
fi;
|
|
done;
|
|
echo "Done."
|
|
|
|
# Update ID of lowcoder user if required
|
|
if [ ! "$(id --user lowcoder)" -eq ${USER_ID} ]; then
|
|
usermod --uid ${USER_ID} lowcoder
|
|
echo "ID for lowcoder user changed to: ${USER_ID}"
|
|
fi;
|
|
|
|
# Update ID of lowcoder group if required
|
|
if [ ! "$(id --group lowcoder)" -eq ${GROUP_ID} ]; then
|
|
groupmod --gid ${GROUP_ID} lowcoder
|
|
echo "ID for lowcoder group changed to: ${GROUP_ID}"
|
|
fi;
|
|
|
|
# Update host on which mongo is supposed to listen
|
|
# If LOWCODER_MONGODB_EXPOSED is true, it will listen on all interfaces
|
|
if [ "${LOWCODER_MONGODB_EXPOSED}" = "true" ]; then
|
|
export MONGO_LISTEN_HOST="0.0.0.0"
|
|
else
|
|
export MONGO_LISTEN_HOST="127.0.0.1"
|
|
fi;
|
|
|
|
# Set the default mongodb connection string if not set explicitly
|
|
if [ -z "${LOWCODER_MONGODB_URL}" ]; then
|
|
export LOWCODER_MONGODB_URL="mongodb://localhost:27017/lowcoder?authSource=admin"
|
|
fi;
|
|
|
|
LOGS="/lowcoder-stacks/logs"
|
|
DATA="/lowcoder-stacks/data"
|
|
CERT="/lowcoder-stacks/ssl"
|
|
# Create folder for holding application logs and data
|
|
mkdir -p ${LOGS}/redis \
|
|
${LOGS}/mongodb \
|
|
${LOGS}/api-service \
|
|
${LOGS}/node-service \
|
|
${LOGS}/frontend \
|
|
${DATA}/redis \
|
|
${DATA}/mongodb \
|
|
${CERT}
|
|
|
|
# Update owner of logs and data - do not try if not running as root (OpenShift)
|
|
if [ "$(id -u)" -eq 0 ]; then
|
|
chown -R "${USER_ID}:${GROUP_ID}" /lowcoder-stacks/ /lowcoder/etc
|
|
fi
|
|
|
|
# Enable services
|
|
SUPERVISOR_AVAILABLE="/lowcoder/etc/supervisord/conf-available"
|
|
SUPERVISOR_ENABLED="/lowcoder/etc/supervisord/conf-enabled"
|
|
|
|
# Create folder for supervisor conf-enabled
|
|
mkdir -p ${SUPERVISOR_ENABLED}
|
|
|
|
# Recreate links to enabled services
|
|
rm -f ${SUPERVISOR_ENABLED}/*.conf
|
|
|
|
# Enable redis if configured to run
|
|
if [ "${LOWCODER_REDIS_ENABLED:=true}" = "true" ]; then
|
|
ln ${SUPERVISOR_AVAILABLE}/01-redis.conf ${SUPERVISOR_ENABLED}/01-redis.conf
|
|
fi;
|
|
|
|
# Enable mongodb if configured to run
|
|
if [ "${LOWCODER_MONGODB_ENABLED:=true}" = "true" ]; then
|
|
ln ${SUPERVISOR_AVAILABLE}/02-mongodb.conf ${SUPERVISOR_ENABLED}/02-mongodb.conf
|
|
fi;
|
|
|
|
# Enable api-service if configured to run
|
|
if [ "${LOWCODER_API_SERVICE_ENABLED:=true}" = "true" ]; then
|
|
ln ${SUPERVISOR_AVAILABLE}/10-api-service.conf ${SUPERVISOR_ENABLED}/10-api-service.conf
|
|
fi;
|
|
|
|
# Enable node-service if configured to run
|
|
if [ "${LOWCODER_NODE_SERVICE_ENABLED:=true}" = "true" ]; then
|
|
ln ${SUPERVISOR_AVAILABLE}/11-node-service.conf ${SUPERVISOR_ENABLED}/11-node-service.conf
|
|
fi;
|
|
|
|
# Enable frontend if configured to run
|
|
if [ "${LOWCODER_FRONTEND_ENABLED:=true}" = "true" ]; then
|
|
ln ${SUPERVISOR_AVAILABLE}/20-frontend.conf ${SUPERVISOR_ENABLED}/20-frontend.conf
|
|
fi;
|
|
|
|
# disable user directive if image is running non-root (Openshift)
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
for i in "${SUPERVISOR_ENABLED}"/*.conf; do
|
|
sed -Ei 's/^\s*user=.*$//' "$i"
|
|
done
|
|
fi
|
|
|
|
# Handle CMD command
|
|
"$@"
|