mirror of
https://github.com/MOIS3Y/logs-collector.git
synced 2025-02-01 01:10:52 +01:00
Add: psql support to entrypoint.sh
This commit is contained in:
parent
feb579ca31
commit
919bf6e69c
@ -1,6 +1,104 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
python manage.py migrate --no-input
|
||||
python manage.py collectstatic --no-input
|
||||
|
||||
gunicorn logs_collector.wsgi:application
|
||||
# set global variables:
|
||||
_DB_URL="${DB_URL}"
|
||||
|
||||
|
||||
# parses the database connection url and sets global variables:
|
||||
#
|
||||
# _DBMS: {psql, sqlite} default dbms used
|
||||
# _DB_HOST {domain,ip_address} for connections
|
||||
# _DB_PORT {5432,3306,etc} for connections
|
||||
# _DB_USER {root,admin,etc} db username
|
||||
# _DB_PASSWORD {super_secret} db user password
|
||||
parse_db_url() {
|
||||
local db_url=$1
|
||||
echo "-------- Check used DBMS --------"
|
||||
if [ -n "${db_url}" ]; then
|
||||
# ! PARSING:
|
||||
# -- -- --
|
||||
# extract the protocol
|
||||
local proto="$(echo "${db_url}" | grep '://' | sed -e's,^\(.*://\).*,\1,g')"
|
||||
local dbms=${proto%:*}
|
||||
# if dpms is "sqlite" we do not need parse url args
|
||||
if [ "${dbms}" = "psql" ]; then
|
||||
# remove the protocol (clean url)
|
||||
local url=$(echo "${db_url}" | sed -e s,"${proto}",,g)
|
||||
# extract the user and password (if any)
|
||||
local userpass="$(echo "${url}" | grep @ | cut -d@ -f1)"
|
||||
local password=$(echo "${userpass}" | grep : | cut -d: -f2)
|
||||
# extract the host and port connection
|
||||
local hostport=$(echo "${url}" | sed -e s,$userpass@,,g | cut -d/ -f1)
|
||||
local port=$(echo "${hostport}" | grep : | cut -d: -f2)
|
||||
# ! SET VARIABLES:
|
||||
# -- -- -- -- --
|
||||
# _DB_HOST or/and _DB_PORT for test db connection
|
||||
if [ -n "${port}" ]; then
|
||||
_DB_HOST=$(echo "${hostport}" | grep : | cut -d: -f1)
|
||||
_DB_PORT="${port}"
|
||||
else
|
||||
_DB_HOST="${hostport}"
|
||||
fi
|
||||
# _DB_USER or/and _DB_PASSWORD for future features
|
||||
if [ -n "${password}" ]; then
|
||||
_DB_USER=$(echo "${userpass}" | grep : | cut -d: -f1)
|
||||
_DB_PASSWORD="${password}"
|
||||
else
|
||||
_DB_USER="${userpass}"
|
||||
fi
|
||||
fi
|
||||
# _DBMS (sqlite or psql)
|
||||
_DBMS="${dbms}"
|
||||
echo "${_DBMS} is set as the default DBMS"
|
||||
else
|
||||
# _DBMS (sqlite)
|
||||
_DBMS="sqlite"
|
||||
echo "${_DBMS} is set as the default DBMS"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# waits until the database becomes available for connection
|
||||
wait_db() {
|
||||
local dbms=$1
|
||||
local db_host=$2
|
||||
local db_port=$3
|
||||
if [ "${dbms}" = "psql" ];then
|
||||
echo "------- Waiting for database start -------"
|
||||
while ! nc -z $db_host $db_port; do
|
||||
sleep 0.1
|
||||
done
|
||||
echo "PostgreSQL started"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# app config performs database migration, collects static files
|
||||
app_config() {
|
||||
echo "-------- Apply migration --------"
|
||||
python manage.py migrate --no-input
|
||||
echo "----- Collect static files ------"
|
||||
python manage.py collectstatic --no-input
|
||||
}
|
||||
|
||||
|
||||
# run app wsgi web server
|
||||
app_run() {
|
||||
echo "--------- Run gunicorn ----------"
|
||||
gunicorn logs_collector.wsgi:application
|
||||
}
|
||||
|
||||
|
||||
# app entrypoint
|
||||
main() {
|
||||
parse_db_url $_DB_URL
|
||||
wait_db $_DBMS $_DB_HOST $_DB_PORT
|
||||
app_config
|
||||
app_run
|
||||
}
|
||||
|
||||
# RUN
|
||||
main
|
||||
|
||||
exec "$@"
|
||||
|
Loading…
Reference in New Issue
Block a user