docker-entrypoint.sh 794 B

12345678910111213141516171819202122232425262728293031
  1. #!/usr/bin/env bash
  2. set -Eeuo pipefail
  3. # usage: file_env VAR [DEFAULT]
  4. # ie: file_env 'XYZ_DB_PASSWORD' 'example'
  5. # (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
  6. # "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
  7. file_env() {
  8. local var="$1"
  9. local fileVar="${var}_FILE"
  10. local def="${2:-}"
  11. if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
  12. echo >&2 "error: both $var and $fileVar are set (but are exclusive)"
  13. exit 1
  14. fi
  15. local val="$def"
  16. if [ "${!var:-}" ]; then
  17. val="${!var}"
  18. elif [ "${!fileVar:-}" ]; then
  19. val="$(< "${!fileVar}")"
  20. fi
  21. export "$var"="$val"
  22. unset "$fileVar"
  23. }
  24. # load secrets either from environment variables or files
  25. file_env 'POSTGRES_PASSWORD'
  26. file_env 'BRIVEN_ANON_KEY'
  27. file_env 'BRIVEN_SERVICE_KEY'
  28. exec "${@}"