docker-entrypoint.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/bin/bash
  2. set -euox pipefail
  3. # TODO: escape vars
  4. UNA_USER="www-una"
  5. VAR_DEF_DB_HOST="localhost"
  6. VAR_DEF_DB_PORT="3306"
  7. VAR_DEF_DB_USER="root"
  8. VAR_DEF_DB_PWD="root"
  9. VAR_DEF_HTTP_HOST="localhost"
  10. VAR_DEF_TITLE="UNA"
  11. VAR_DEF_USERNAME="admin"
  12. VAR_DEF_ADMIN_PWD="admin"
  13. VAR_DEF_EMAIL="admin@example.com"
  14. VAR_DEF_VERSION="11.0.3"
  15. VAR_DEF_ZIP_DOWNLOAD_URL="http://ci.una.io/builds/UNA-v.${UNA_VERSION:-$VAR_DEF_VERSION}.zip"
  16. VAR_DEF_ZIP_FOLDER="UNA-v.${UNA_VERSION:-$VAR_DEF_VERSION}"
  17. # function
  18. qs() {
  19. echo ${1@Q}
  20. }
  21. # Unzip
  22. if [ ! -e "index.php" ] && [ ! -e "inc/version.inc.php" ]; then
  23. su $UNA_USER -c "curl -fSL $(qs ${UNA_ZIP_DOWNLOAD_URL:-$VAR_DEF_ZIP_DOWNLOAD_URL}) -o una.zip"
  24. su $UNA_USER -c "unzip -o una.zip"
  25. su $UNA_USER -c "rm una.zip"
  26. su $UNA_USER -c "mv $(qs ${UNA_ZIP_FOLDER:-$VAR_DEF_ZIP_FOLDER})/* ."
  27. su $UNA_USER -c "mv $(qs ${UNA_ZIP_FOLDER:-$VAR_DEF_ZIP_FOLDER}/.htaccess) ."
  28. su $UNA_USER -c "rm -rf $(qs ${UNA_ZIP_FOLDER:-$VAR_DEF_ZIP_FOLDER})"
  29. fi
  30. # Clean folders
  31. rm -rf cache/* cache_public/* tmp/*
  32. # Change permissions
  33. chmod +x plugins/ffmpeg/ffmpeg.exe
  34. find . -exec chown $UNA_USER:$UNA_USER {} \+
  35. # Install
  36. if [ -d "install" ] && [ ! -f "inc/header.inc.php" ]; then
  37. su $UNA_USER -c "php ./install/cmd.php \
  38. --db_host=$(qs ${UNA_DB_HOST:-$VAR_DEF_DB_HOST}) \
  39. --db_port=$(qs ${UNA_DB_PORT:-$VAR_DEF_DB_PORT}) \
  40. --db_sock=$(qs ${UNA_DB_SOCK:-}) \
  41. --db_name=$(qs ${UNA_DB_NAME}) \
  42. --db_user=$(qs ${UNA_DB_USER:-$VAR_DEF_DB_USER}) \
  43. --db_password=$(qs ${UNA_DB_PWD:-$VAR_DEF_DB_PWD}) \
  44. --server_http_host=$(qs ${UNA_HTTP_HOST:-$VAR_DEF_HTTP_HOST}) \
  45. --server_php_self='/install/index.php' \
  46. --server_doc_root='/var/www/html/' \
  47. --site_title=$(qs ${UNA_SITE_TITLE:-$VAR_DEF_TITLE}) \
  48. --site_email=$(qs ${UNA_SITE_EMAIL:-$VAR_DEF_EMAIL}) \
  49. --admin_username=$(qs ${UNA_ADMIN_USERNAME:-$VAR_DEF_USERNAME}) \
  50. --admin_email=$(qs ${UNA_ADMIN_EMAIL:-$VAR_DEF_EMAIL}) \
  51. --admin_password=$(qs ${UNA_ADMIN_PWD:-$VAR_DEF_ADMIN_PWD}) \
  52. --oauth_key=$(qs ${UNA_KEY:-}) --oauth_secret=$(qs ${UNA_SECRET:-})"
  53. rm -rf ./install
  54. fi
  55. # Crontab
  56. if [[ ! -v UNA_NO_CRONTAB ]]; then
  57. echo "* * * * * /usr/local/bin/php -c /var/www /var/www/html/periodic/cron.php 2>&1 | sed -e \"s/\(.*\)/[\`date\`] \1/\" >>/var/www/cron.log" > /var/www/crontab
  58. chown $UNA_USER:$UNA_USER /var/www/crontab
  59. crontab -u $UNA_USER /var/www/crontab
  60. rm -f /etc/cron.d/sendmail
  61. /etc/init.d/cron start
  62. fi
  63. #
  64. exec "$@"