entrypoint.sh 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/usr/bin/env bash
  2. # TODO: Données de postgreSQL dans un volume
  3. # TODO: Mettre des variable d'environn pour la config
  4. # TODO: Supporter le changement des variables d'environnement ? (actuellement utilisé pour générer le .ini)
  5. # TODO: Fichiers de config link ls -s dans un dossier pour VOLUME
  6. # TODO: README QQCH pour les ports ? 80, 3060 et 5333
  7. # TODO: generate cookie secrent (if not yet done)
  8. # TODO: run uwsgi as other user
  9. # TODO: Gestion des migrations
  10. # TODO: Verbosite des logs ?
  11. #
  12. # ENVIRONMENT VARIABLES ARE:
  13. #
  14. # * DATABASE_TYPE (values: postgresql, mysql, sqlite)
  15. # * DATABASE_USER
  16. # * DATABASE_PASSWORD
  17. # * DATABASE_HOST
  18. # * DATABASE_PORT
  19. # * DATABASE_NAME
  20. #
  21. # Check environment variables
  22. /tracim/check_env_vars.sh
  23. # Create config.ini file if no exist
  24. if [ ! -f /etc/tracim/config.ini ]; then
  25. cp /tracim/tracim/development.ini.base /etc/tracim/config.ini
  26. fi
  27. ln -s /etc/tracim/config.ini /tracim/tracim/config.ini
  28. # Create wsgidav.conf file if no exist
  29. if [ ! -f /etc/tracim/wsgidav.conf ]; then
  30. cp /tracim/tracim/wsgidav.conf.sample /etc/tracim/wsgidav.conf
  31. fi
  32. ln -s /etc/tracim/wsgidav.conf /tracim/tracim/wsgidav.conf
  33. # Create uwsgi file if no exist
  34. if [ ! -f /etc/tracim/uwsgi.ini ]; then
  35. cp /tracim/tracim/uwsgi.ini.template /etc/tracim/uwsgi.ini
  36. fi
  37. # MySQL case
  38. if [ "$DATABASE_TYPE" = mysql ] ; then
  39. # Ensure DATABASE_PORT is set
  40. if ! [ -n "$DATABASE_PORT" ]; then
  41. DATABASE_PORT=3306
  42. fi
  43. # engine is mysql+oursql
  44. DATABASE_TYPE=mysql+oursql
  45. # Check if database must be init
  46. TEST_TABLE=$(mysql --host="$DATABASE_HOST" --user="$DATABASE_USER" --password="$DATABASE_USER" --database="$DATABASE_NAME" -s -N --execute="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$DATABASE_NAME' AND table_name = 'content';")
  47. if [ ${TEST_TABLE} = 0 ] ; then
  48. INIT_DATABASE=true
  49. fi
  50. fi
  51. # PostgreSQL case
  52. if [ "$DATABASE_TYPE" = postgresql ] ; then
  53. # Ensure DATABASE_PORT is set
  54. if ! [ -n "$DATABASE_PORT" ]; then
  55. DATABASE_PORT=5432
  56. fi
  57. DATABASE_SUFFIX="?client_encoding=utf8"
  58. # Check if database must be init
  59. TEST_TABLE=$(PGPASSWORD="$DATABASE_PASSWORD" psql -U ${DATABASE_USER} -h ${TEST_TABLE} -d ${DATABASE_NAME} -t -c "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'content' );")
  60. if [ ${TEST_TABLE} = f ] ; then
  61. INIT_DATABASE=true
  62. fi
  63. fi
  64. # Initialize database if needed
  65. if [ "$INIT_DATABASE" = true ] ; then
  66. cd /tracim/tracim/ && gearbox setup-app -c config.ini
  67. fi
  68. # Update sqlalchemy.url
  69. sed -i "s/\(sqlalchemy.url *= *\).*/\\sqlalchemy.url = $DATABASE_TYPE:\/\/$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOST:$DATABASE_PORT\/$DATABASE_NAME$DATABASE_SUFFIX/" /etc/tracim/config.ini
  70. # Start with uwsgi
  71. uwsgi --http-socket 0.0.0.0:80 /etc/tracim/uwsgi.ini