Distinguish between POSTGRES_DB and POSTGRES_USER

Closes #1301.
This commit is contained in:
Nikita P. Shupeyko 2018-03-08 16:59:41 +03:00
parent dd0a73a985
commit 5543359382
4 changed files with 23 additions and 18 deletions

View File

@ -113,10 +113,11 @@ Consider the aforementioned ``.envs/.local/.postgres``: ::
# PostgreSQL # PostgreSQL
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
POSTGRES_DB=<your project slug>
POSTGRES_USER=XgOWtQtJecsAbaIyslwGvFvPawftNaqO POSTGRES_USER=XgOWtQtJecsAbaIyslwGvFvPawftNaqO
POSTGRES_PASSWORD=jSljDz4whHuwO3aJIgVBrqEml5Ycbghorep4uVJ4xjDYQu0LfuTZdctj7y0YcCLu POSTGRES_PASSWORD=jSljDz4whHuwO3aJIgVBrqEml5Ycbghorep4uVJ4xjDYQu0LfuTZdctj7y0YcCLu
The two envs we are presented with here are ``POSTGRES_USER``, and ``POSTGRES_PASSWORD`` (by the way, their values have also been generated for you). You might have figured out already where these definitions will end up; it's all the same with ``django`` and ``caddy`` service container envs. The three envs we are presented with here are ``POSTGRES_DB``, ``POSTGRES_USER``, and ``POSTGRES_PASSWORD`` (by the way, their values have also been generated for you). You might have figured out already where these definitions will end up; it's all the same with ``django`` and ``caddy`` service container envs.
Tips & Tricks Tips & Tricks

View File

@ -1,4 +1,5 @@
# PostgreSQL # PostgreSQL
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
POSTGRES_DB={{ cookiecutter.project_slug }}
POSTGRES_USER=!!!SET POSTGRES_USER!!! POSTGRES_USER=!!!SET POSTGRES_USER!!!
POSTGRES_PASSWORD=!!!SET POSTGRES_PASSWORD!!! POSTGRES_PASSWORD=!!!SET POSTGRES_PASSWORD!!!

View File

@ -1,4 +1,5 @@
# PostgreSQL # PostgreSQL
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
POSTGRES_DB={{ cookiecutter.project_slug }}
POSTGRES_USER=!!!SET POSTGRES_USER!!! POSTGRES_USER=!!!SET POSTGRES_USER!!!
POSTGRES_PASSWORD=!!!SET POSTGRES_PASSWORD!!! POSTGRES_PASSWORD=!!!SET POSTGRES_PASSWORD!!!

View File

@ -2,45 +2,47 @@
set -o errexit set -o errexit
set -o pipefail set -o pipefail
set -o nounset
# todo: turn on after #1295
# set -o nounset
cmd="$@" 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.
export REDIS_URL=redis://redis:6379 export REDIS_URL=redis://redis:6379
{%- if cookiecutter.use_celery == 'y' %}
export CELERY_BROKER_URL="${REDIS_URL}/0"
{%- endif %}
if [ -z "${POSTGRES_USER}" ]; then
# the official postgres image uses 'postgres' as default user if not set explictly. # the official postgres image uses 'postgres' as default user if not set explictly.
if [ -z "$POSTGRES_USER" ]; then
export POSTGRES_USER=postgres export POSTGRES_USER=postgres
fi fi
export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}"
export DATABASE_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres:5432/$POSTGRES_USER
{% if cookiecutter.use_celery == 'y' %}
export CELERY_BROKER_URL=$REDIS_URL/0
{% endif %}
postgres_ready() { postgres_ready() {
python << END python << END
import sys import sys
import psycopg2 import psycopg2
try: try:
conn = psycopg2.connect(dbname="$POSTGRES_USER", user="$POSTGRES_USER", password="$POSTGRES_PASSWORD", host="postgres") psycopg2.connect(
dbname="${POSTGRES_DB}",
user="${POSTGRES_USER}",
password="${POSTGRES_PASSWORD}",
host="postgres"
)
except psycopg2.OperationalError: except psycopg2.OperationalError:
sys.exit(-1) sys.exit(-1)
sys.exit(0) sys.exit(0)
END END
} }
until postgres_ready; do until postgres_ready; do
>&2 echo "Postgres is unavailable - sleeping" >&2 echo 'PostgreSQL is unavailable (sleeping)...'
sleep 1 sleep 1
done done
>&2 echo "Postgres is up - continuing..." >&2 echo 'PostgreSQL is up - continuing...'
exec $cmd exec $cmd