Skript entrypoint.sh
Automaticky generovaná dokumentace skriptu scripts/entrypoint.sh.
1#!/bin/bash
2
3set -e
4
5export DJANGO_SETTINGS_MODULE=webclient.settings.production
6
7sudo cron
8
9pgq() {
10 output=$(psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d postgres -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '$DB_NAME' AND pid <> pg_backend_pid();")
11 text=$(echo "$output" | tail -n 1)
12 cislo=$(grep -o '[0-9]\+' <<< "$text")
13 echo $cislo
14}
15
16CONFIG_FILE="/run/secrets/db_conf"
17if [ ! -f "$CONFIG_FILE" ]; then
18 echo "Configuration file not found: $CONFIG_FILE"
19 exit 1
20fi
21
22DB_NAME=$(jq -r '.DB_NAME' $CONFIG_FILE)
23DB_USER=$(jq -r '.DB_USER' $CONFIG_FILE)
24DB_PASS=$(jq -r '.DB_PASS' $CONFIG_FILE)
25DB_HOST=$(jq -r '.DB_HOST' $CONFIG_FILE)
26DB_PORT=$(jq -r '.DB_PORT' $CONFIG_FILE)
27
28if [ -z "$DB_NAME" ] || [ -z "$DB_USER" ] || [ -z "$DB_PASS" ] || [ -z "$DB_HOST" ] || [ -z "$DB_PORT" ]; then
29 echo "Failed to parse the configuration file or one of the required fields is empty."
30 exit 1
31fi
32
33export PGPASSWORD=$DB_PASS
34NEW_DB_NAME="${DB_NAME}_backup_${VERSION}"
35
36DB_EXISTS=$(psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d postgres -tAc "SELECT 1 FROM pg_database WHERE datname = '$NEW_DB_NAME'")
37
38if [ "$DB_EXISTS" = "1" ]; then
39 echo "Database already exists: $NEW_DB_NAME"
40else
41 echo "Creating new database: $NEW_DB_NAME"
42 #psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d postgres -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '$DB_NAME' AND pid <> pg_backend_pid();" > /dev/null
43 counter=0
44 cislo=$(pgq)
45 echo "Number of using database: $cislo"
46 while [[ $cislo -ne 0 && "$counter" -lt 10 ]]; do
47 cislo=$(pgq)
48 echo "Number of using database: $cislo"
49 counter=$((counter+1))
50 echo "Counter: $counter"
51 done
52 echo "Number of iterations: $counter"
53 psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d postgres -c "CREATE DATABASE \"$NEW_DB_NAME\" WITH TEMPLATE $DB_NAME strategy FILE_COPY;"
54 if [ $? -eq 0 ]; then
55 echo "New database created successfully: $NEW_DB_NAME"
56 else
57 echo "Failed to create new database: $NEW_DB_NAME"
58 exit 1
59 fi
60
61fi
62
63unset PGPASSWORD
64
65python3 manage.py migrate
66python3 manage.py collectstatic --noinput --clear
67python3 manage.py compress --force
68python3 manage.py migrate
69python3 manage.py shell < data_management.py
70python3 manage.py import_permissions
71
72# copy custom_html to volume nginx_data
73cp -r --update=none /custom_html/* /vol/web/nginx/data
74
75#Copy locale from volume, create new one/update old, copy locale to volume and remove from app. Move has permission denied.
76
77languages=( "cs" "en" )
78
79#Source of locale on persistent volume
80volume_locale='/vol/web/locale/${lang_item}/LC_MESSAGES'
81code_locale='/code/locale/${lang_item}/LC_MESSAGES'
82
83for lang_item in ${languages[@]}; do
84
85 echo "#make dirs $(eval echo ${code_locale})"
86 mkdir -p $(eval "echo ${code_locale}")
87
88 test -e $(eval "echo ${volume_locale}/django.po") && eval "cp ${volume_locale}/*.* ${code_locale}/" || echo "${lang_item} locale file does not exist will create new one"
89
90 echo "#makemessages ${lang_item}"
91 python3 manage.py makemessages -l ${lang_item}
92
93 echo "#copy ${lang_item} from tmp path back to persitent volume location"
94 eval "cp ${code_locale}/* ${volume_locale}/"
95
96 echo "#remove tmp locale ${lang_item}"
97 eval "rm ${code_locale}/*"
98
99done
100
101python3 manage.py send_test_emails
102
103sudo uwsgi /scripts/uwsgi_site.ini