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
 65STATIC_ROOT=$(python3 manage.py shell -v 0 -c "from django.conf import settings; print(settings.STATIC_ROOT)")
 66echo "Cleaning STATIC_ROOT: $STATIC_ROOT"
 67find "$STATIC_ROOT" -mindepth 1 -delete
 68
 69python3 manage.py migrate
 70python3 manage.py collectstatic --noinput
 71python3 manage.py compress --force
 72python3 manage.py migrate
 73python3 manage.py shell < data_management.py
 74python3 manage.py import_permissions
 75
 76# copy custom_html to volume nginx_data
 77cp -r --update=none /custom_html/* /vol/web/nginx/data
 78
 79#Copy locale from volume, create new one/update old, copy locale to volume and remove from app. Move has permission denied.
 80
 81languages=( "cs" "en" )
 82
 83#Source of locale on persistent volume
 84volume_locale='/vol/web/locale/${lang_item}/LC_MESSAGES'
 85code_locale='/code/locale/${lang_item}/LC_MESSAGES'
 86
 87for lang_item in ${languages[@]}; do
 88   
 89  echo "#make dirs $(eval echo ${code_locale})"
 90  mkdir -p $(eval "echo ${code_locale}")
 91  
 92  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"
 93  
 94  echo "#makemessages ${lang_item}"
 95  python3 manage.py makemessages -l ${lang_item}
 96  
 97  echo "#copy ${lang_item} from tmp path back to persitent volume location"
 98  eval "cp ${code_locale}/* ${volume_locale}/"
 99
100  echo "#remove tmp locale ${lang_item}"
101  eval "rm ${code_locale}/*"
102
103done
104
105python3 manage.py send_test_emails
106
107sudo uwsgi /scripts/uwsgi_site.ini