From c07aa0dbecfe865d09ed9324ac170c4352ce670c Mon Sep 17 00:00:00 2001 From: jo Date: Fri, 20 Jan 2023 18:03:46 +0100 Subject: [PATCH] fix(api): postgres connection details in docker setup We properly recognize the docker setup to generate DATABASE_URL configuration. Fix #2036 Part-of: --- api/Dockerfile | 1 + api/config/settings/common.py | 22 +++++++++++----------- changes/changelog.d/2036.bugfix | 1 + 3 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 changes/changelog.d/2036.bugfix diff --git a/api/Dockerfile b/api/Dockerfile index 0091888a6..c22de6d87 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -111,5 +111,6 @@ RUN set -eux; \ ENV CACHE_URL="redis://redis:6379/0" ENV CELERY_BROKER_URL="redis://redis:6379/0" +ENV IS_DOCKER_SETUP=true CMD ["./docker/server.sh"] diff --git a/api/config/settings/common.py b/api/config/settings/common.py index a4de94691..7ce1085b9 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -371,24 +371,24 @@ vars().update(EMAIL_CONFIG) # ------------------------------------------------------------------------------ # See: https://docs.djangoproject.com/en/dev/ref/settings/#databases -_DOCKER_DATABASE_HOST = "postgres" -_DOCKER_DATABASE_PORT = 5432 -_DOCKER_DATABASE_USER = env.str("POSTGRES_ENV_POSTGRES_USER", "postgres") -_DOCKER_DATABASE_PASSWORD = env.str("POSTGRES_ENV_POSTGRES_PASSWORD", None) -_DOCKER_DATABASE_NAME = _DOCKER_DATABASE_USER - # The `_database_url_docker` variable will only by used as default for DATABASE_URL # in the context of a docker deployment. _database_url_docker = None -# When POSTGRES_ENV_POSTGRES_PASSWORD is set, we are in the context of a docker deployment. -if _DOCKER_DATABASE_PASSWORD is not None: +if env.bool("IS_DOCKER_SETUP", False) and env.str("DATABASE_URL", None) is None: warnings.warn( DeprecationWarning( - "the 'POSTGRES_ENV_POSTGRES_USER' and 'POSTGRES_ENV_POSTGRES_PASSWORD' " - "environment variables are deprecated, please use the dedicated " - "'DATABASE_USER' and 'DATABASE_PASSWORD' environment variables instead" + "the automatically generated 'DATABASE_URL' configuration in the docker " + "setup is deprecated, please configure either the 'DATABASE_URL' " + "environment variable or the 'DATABASE_HOST', 'DATABASE_USER' and " + "'DATABASE_PASSWORD' environment variables instead" ) ) + _DOCKER_DATABASE_HOST = "postgres" + _DOCKER_DATABASE_PORT = 5432 + _DOCKER_DATABASE_USER = env.str("POSTGRES_ENV_POSTGRES_USER", "postgres") + _DOCKER_DATABASE_PASSWORD = env.str("POSTGRES_ENV_POSTGRES_PASSWORD", "") + _DOCKER_DATABASE_NAME = _DOCKER_DATABASE_USER + _database_url_docker = ( f"postgres:" f"//{_DOCKER_DATABASE_USER}:{_DOCKER_DATABASE_PASSWORD}" diff --git a/changes/changelog.d/2036.bugfix b/changes/changelog.d/2036.bugfix new file mode 100644 index 000000000..059cbd9ee --- /dev/null +++ b/changes/changelog.d/2036.bugfix @@ -0,0 +1 @@ +Fix postgres connection details in docker setup