cookiecutter-django/{{cookiecutter.project_slug}}/compose/production/django/entrypoint.sh

47 lines
1.2 KiB
Bash
Raw Normal View History

#!/bin/sh
set -o errexit
set -o pipefail
# todo: turn on after #1295
# set -o nounset
cmd="$@"
# This entrypoint is used to play nicely with the current cookiecutter configuration.
# Since docker-compose relies heavily on environment variables itself for configuration, we'd have to define multiple
# environment variables just to support cookiecutter out of the box. That makes no sense, so this little entrypoint
# does all this for us.
2016-01-08 13:16:14 +03:00
export REDIS_URL=redis://redis:6379
2015-07-16 18:43:02 +03:00
# the official postgres image uses 'postgres' as default user if not set explictly.
2016-03-08 12:12:55 +03:00
if [ -z "$POSTGRES_USER" ]; then
export POSTGRES_USER=postgres
fi
2015-07-16 18:43:02 +03:00
2016-03-08 12:12:55 +03:00
export DATABASE_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres:5432/$POSTGRES_USER
{% if cookiecutter.use_celery == 'y' %}
2016-01-08 13:16:14 +03:00
export CELERY_BROKER_URL=$REDIS_URL/0
2015-07-16 18:43:02 +03:00
{% endif %}
postgres_ready() {
python << END
import sys
import psycopg2
try:
conn = psycopg2.connect(dbname="$POSTGRES_USER", user="$POSTGRES_USER", password="$POSTGRES_PASSWORD", host="postgres")
except psycopg2.OperationalError:
sys.exit(-1)
sys.exit(0)
END
}
until postgres_ready; do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
>&2 echo "Postgres is up - continuing..."
exec $cmd