From 417b3728140f9701e5879f34ed155ff61b21ab8f Mon Sep 17 00:00:00 2001 From: Artem Kasheev Date: Sun, 20 Mar 2022 21:12:16 +0300 Subject: [PATCH] PostgreSQL database --- .env.dev | 7 +++++++ .env.prod | 7 +++++++ backend/requirements.txt | 3 ++- backend/server/server/settings.py | 11 ++++++++--- docker-compose-dev.yml | 19 +++++++++++++++---- docker-compose.yml | 15 ++++++++++++++- 6 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 .env.dev create mode 100644 .env.prod diff --git a/.env.dev b/.env.dev new file mode 100644 index 0000000..2aad569 --- /dev/null +++ b/.env.dev @@ -0,0 +1,7 @@ +SQL_ENGINE=django.db.backends.postgresql +SQL_DATABASE=hello_django_dev +SQL_USER=hello_django +SQL_PASSWORD=hello_django +SQL_HOST=db +SQL_PORT=5432 +DATABASE=postgres diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..d210c00 --- /dev/null +++ b/.env.prod @@ -0,0 +1,7 @@ +SQL_ENGINE=django.db.backends.postgresql +SQL_DATABASE=hello_django_prod +SQL_USER=hello_django +SQL_PASSWORD=hello_django +SQL_HOST=db +SQL_PORT=5432 +DATABASE=postgres diff --git a/backend/requirements.txt b/backend/requirements.txt index 304116a..ed7c4db 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -3,4 +3,5 @@ djoser==2.0.5 djangorestframework==3.11.2 # https://github.com/sunscrapers/djoser/issues/541 markdown==3.3 django-filter==2.4.0 -django_cors_headers==3.5.0 \ No newline at end of file +django_cors_headers==3.5.0 +psycopg2-binary>=2.8 diff --git a/backend/server/server/settings.py b/backend/server/server/settings.py index 23b4182..fc0aff3 100644 --- a/backend/server/server/settings.py +++ b/backend/server/server/settings.py @@ -10,6 +10,7 @@ https://docs.djangoproject.com/en/3.1/ref/settings/ """ +import os from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. @@ -120,9 +121,13 @@ # https://docs.djangoproject.com/en/3.1/ref/settings/#databases DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': BASE_DIR / 'db.sqlite3', + "default": { + "ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"), + "NAME": os.environ.get("SQL_DATABASE", BASE_DIR / "db.sqlite3"), + "USER": os.environ.get("SQL_USER", "user"), + "PASSWORD": os.environ.get("SQL_PASSWORD", "password"), + "HOST": os.environ.get("SQL_HOST", "localhost"), + "PORT": os.environ.get("SQL_PORT", "5432"), } } diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 6af483e..2b993b3 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -1,6 +1,14 @@ version: '2' services: + db: + image: postgres:13.0-alpine + volumes: + - postgres_data:/var/lib/postgresql/data/ + environment: + - POSTGRES_USER=hello_django + - POSTGRES_PASSWORD=hello_django + - POSTGRES_DB=hello_django_dev nginx: restart: unless-stopped build: @@ -18,14 +26,17 @@ services: build: context: . dockerfile: ./docker/backend/Dockerfile - volumes: - entrypoint: /app/docker/backend/wsgi-entrypoint.sh volumes: - .:/app - static_volume:/app/backend/server/django_static expose: - - 8000 + - 8000 + env_file: + - ./.env.dev + depends_on: + - db volumes: - static_volume: {} \ No newline at end of file + postgres_data: + static_volume: diff --git a/docker-compose.yml b/docker-compose.yml index a8797ad..f99a3a7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,14 @@ version: '2' services: + db: + image: postgres:13.0-alpine + volumes: + - postgres_data:/var/lib/postgresql/data/ + environment: + - POSTGRES_USER=hello_django + - POSTGRES_PASSWORD=hello_django + - POSTGRES_DB=hello_django_prod nginx: restart: unless-stopped build: @@ -33,6 +41,11 @@ services: - static_volume:/app/backend/server/django_static expose: - 8000 + env_file: + - ./.env.prod + depends_on: + - db volumes: - static_volume: {} \ No newline at end of file + static_volume: + postgres_data: