diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..bae407f --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +POSTGRES_USER= +POSTGRES_PASSWORD= +POSTGRES_HOST= +DB_PORT= +POSTGRES_DB= \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9a2d2bf --- /dev/null +++ b/Makefile @@ -0,0 +1,38 @@ +SHELL := /bin/bash + +# PYTHON +VENV_NAME := .venv +PYTHON := $(VENV_NAME)/bin/python +PIP := $(VENV_NAME)/bin/pip +REQUIREMENTS := requirements-dev.txt + +# Docker +DOCKER_COMPOSE := docker-compose +DOCKER_COMPOSE_FILE := docker-compose.yml +DOCKER_DIRECTORY := dev_env + +.PHONY: all venv install activate clean dev_env_start dev_env_stop + +all: venv install activate + +venv: + python3 -m venv $(VENV_NAME) + @echo "Activating virtual environment with 'source $(VENV_NAME)/bin/activate'. Run 'deactivate' to exit." + +install: venv + @source $(VENV_NAME)/bin/activate && $(PIP) install -r $(REQUIREMENTS) + +clean: + rm -rf $(VENV_NAME) + +dev_env_start: + if [ ! $(DOCKER_COMPOSE)]; then \ + echo "Docker Compose not installed. Please install Docker Compose."; \ + exit 1; \ + fi + $(DOCKER_COMPOSE) -f $(DOCKER_DIRECTORY)/$(DOCKER_COMPOSE_FILE) up -d + @echo "Running migrations..." + $(PYTHON) manage.py migrate + +dev_env_stop: + $(DOCKER_COMPOSE) -f $(DOCKER_DIRECTORY)/$(DOCKER_COMPOSE_FILE) down -v \ No newline at end of file diff --git a/dev_env/docker-compose.yml b/dev_env/docker-compose.yml new file mode 100644 index 0000000..ac00a8b --- /dev/null +++ b/dev_env/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3' + +services: + db: + image: postgres:13 + restart: always + env_file: + - ../.env + ports: + - 5432:5432 + volumes: + - ./postgres-data:/var/lib/postgresql/data + diff --git a/la_chariotte/settings.py b/la_chariotte/settings.py index 844810c..fd0c454 100644 --- a/la_chariotte/settings.py +++ b/la_chariotte/settings.py @@ -3,6 +3,9 @@ from pathlib import Path import sentry_sdk from sentry_sdk.integrations.django import DjangoIntegration +from dotenv import load_dotenv + +load_dotenv() BASE_DIR = Path(__file__).resolve().parent.parent BASE_URL = os.getenv("BASE_URL", "http://127.0.0.1:8000") @@ -83,16 +86,16 @@ WSGI_APPLICATION = "la_chariotte.wsgi.application" DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", - "NAME": os.getenv("DB_NAME", "chariotte"), + "NAME": os.getenv("POSTGRES_DB", "chariotte"), } } -if os.getenv("DB_USER"): - DATABASES["default"]["USER"] = os.getenv("DB_USER") -if os.getenv("DB_PASSWORD"): - DATABASES["default"]["PASSWORD"] = os.getenv("DB_PASSWORD") -if os.getenv("DB_HOST"): - DATABASES["default"]["HOST"] = os.getenv("DB_HOST") +if os.getenv("POSTGRES_USER"): + DATABASES["default"]["USER"] = os.getenv("POSTGRES_USER") +if os.getenv("POSTGRES_PASSWORD"): + DATABASES["default"]["PASSWORD"] = os.getenv("POSTGRES_PASSWORD") +if os.getenv("POSTGRES_HOST"): + DATABASES["default"]["HOST"] = os.getenv("POSTGRES_HOST") if os.getenv("DB_PORT"): DATABASES["default"]["PORT"] = os.getenv("DB_PORT") diff --git a/pyproject.toml b/pyproject.toml index e4d7dc9..86bd142 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ dependencies = [ "html2text>=2020.1.16", "django-crispy-forms>=2.0,<3", "crispy-bulma>=0.11.0,<1", + "python-dotenv==1.0.0" ] [tool.setuptools] diff --git a/requirements-dev.txt b/requirements-dev.txt index 5d35b64..fcf1cc0 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -212,7 +212,10 @@ zipp==3.15.0 # via importlib-metadata zopfli==0.2.2 # via fonttools +python-dotenv==1.0.0 + # via la-chariotte (pyproject.toml) # The following packages are considered to be unsafe in a requirements file: # pip # setuptools + diff --git a/requirements.txt b/requirements.txt index c6e231c..668d353 100644 --- a/requirements.txt +++ b/requirements.txt @@ -137,3 +137,5 @@ xhtml2pdf==0.2.11 # via la-chariotte (pyproject.toml) zopfli==0.2.2 # via fonttools +python-dotenv==1.0.0 + # via la-chariotte (pyproject.toml)