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