2018-02-22 18:01:05 +03:00
|
|
|
#!/bin/sh
|
2017-09-05 14:39:20 +03:00
|
|
|
|
|
|
|
set -o errexit
|
|
|
|
set -o pipefail
|
|
|
|
|
|
|
|
# todo: turn on after #1295
|
|
|
|
# set -o nounset
|
|
|
|
|
|
|
|
|
2016-08-16 22:20:41 +03:00
|
|
|
cmd="$@"
|
|
|
|
|
2015-08-18 18:50:20 +03:00
|
|
|
# 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
|
|
|
|
2015-08-18 18:50:20 +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
|
2015-08-18 18:50:20 +03:00
|
|
|
{% 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 %}
|
2016-08-16 22:20:41 +03:00
|
|
|
|
2018-02-22 18:01:05 +03:00
|
|
|
postgres_ready() {
|
2016-08-16 22:20:41 +03:00
|
|
|
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
|