entrypoint.sh 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. #
  10. # ENVIRONMENT VARIABLES ARE:
  11. #
  12. # * DATABASE_TYPE (values: postgresql, mysql, sqlite)
  13. # * DATABASE_USER
  14. # * DATABASE_PASSWORD
  15. # * DATABASE_HOST
  16. # * DATABASE_PORT
  17. # * DATABASE_NAME
  18. #
  19. # Check environment variables
  20. /tracim/check_env_vars.sh
  21. # Create config.ini file if no exist
  22. if [ ! -f /etc/tracim/config.ini ]; then
  23. cp /tracim/tracim/development.ini.base /etc/tracim/config.ini
  24. fi
  25. ln -s /etc/tracim/config.ini /tracim/tracim/config.ini
  26. # Create wsgidav.conf file if no exist
  27. if [ ! -f /etc/tracim/wsgidav.conf ]; then
  28. cp /tracim/tracim/wsgidav.conf.sample /etc/tracim/wsgidav.conf
  29. fi
  30. ln -s /etc/tracim/wsgidav.conf /tracim/tracim/wsgidav.conf
  31. # Create uwsgi file if no exist
  32. if [ ! -f /etc/tracim/uwsgi.ini ]; then
  33. cp /tracim/tracim/uwsgi.ini.template /etc/tracim/uwsgi.ini
  34. fi
  35. # MySQL case
  36. if [ "$DATABASE_TYPE" = mysql ] ; then
  37. # Ensure DATABASE_PORT is set
  38. if ! [ -n "$DATABASE_PORT" ]; then
  39. DATABASE_PORT=3306
  40. fi
  41. # engine is mysql+oursql
  42. DATABASE_TYPE=mysql+oursql
  43. fi
  44. # PostgreSQL case
  45. if [ "$DATABASE_TYPE" = postgresql ] ; then
  46. # Ensure DATABASE_PORT is set
  47. if ! [ -n "$DATABASE_PORT" ]; then
  48. DATABASE_PORT=5432
  49. fi
  50. DATABASE_SUFFIX="?client_encoding=utf8"
  51. fi
  52. # Update sqlalchemy.url
  53. 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
  54. # Initialize database if it is a fresh install
  55. if [ "$DATABASE_TYPE" = postgresql ] ; then
  56. TEST_TABLE=$(PGPASSWORD="$DATABASE_PASSWORD" psql -U ${DATABASE_USER} -h ${DATABASE_HOST} -d ${DATABASE_NAME} -t -c "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'content' );")
  57. if [ ${TEST_TABLE} = f ] ; then
  58. INIT_DATABASE=true
  59. fi
  60. fi
  61. if [ "$INIT_DATABASE" = true ] ; then
  62. cd /tracim/tracim/ && gearbox setup-app -c config.ini
  63. fi
  64. # Start with uwsgi
  65. uwsgi --http-socket 0.0.0.0:80 /etc/tracim/uwsgi.ini