diff --git a/README.md b/README.md new file mode 100644 index 0000000..b89d13c --- /dev/null +++ b/README.md @@ -0,0 +1,117 @@ +# Django Docker Quickstart + +This is a quickstart for Django with Docker. + +## Features + +- Django +- PostgreSQL +- Redis +- Celery(worker and beat) +- Nginx +- Traefik + +## Requirements + +- Docker +- Docker Compose +- Python 3.10 or higher +- Make(optional for shortcuts) + + +## Getting Started + +To get started, follow these steps: + +1. Clone the repository: + + ``` + git clone https://github.com/godd0t/django-docker-quickstart.git + ``` + +2. Change directory into the project: + ``` + cd django-docker-quickstart + ``` + +3. Copy the `env.example` file to `.env` and update the values as needed: + ``` + cp env.example .env + ``` + +## Initial Setup + +### Development + +To set up the project for development, follow these steps: + +1. Create a virtual environment: + ``` + python -m venv venv + ``` + +2. Activate the virtual environment: + ``` + source venv/bin/activate + ``` + +3. Install the development requirements: + ``` + pip install -r requirements/requirements-dev.txt + ``` + +4. Build and run the project: + ``` + docker-compose up --build -d + ``` + + +### Production + +To set up the project for production, follow these steps: + +1. Build the image and run the container: + ``` + docker-compose -f docker-compose.prod.yml up --build -d + ``` + + +## Shortcuts + +To make development easier, there are a few shortcuts available: + +Create migrations: + +``` +make make-migrations +``` + +Run migrations: + +``` +make migrate +``` + +Run the linter: + +``` +make lint +``` + +Run the formatter: + +``` +make format +``` + +Run the tests: + +``` +make test +``` + +Create a super user: + +``` +make super-user +``` diff --git a/deployment/scripts/backend/start.sh b/deployment/scripts/backend/start.sh index a29740b..b6b7994 100644 --- a/deployment/scripts/backend/start.sh +++ b/deployment/scripts/backend/start.sh @@ -9,5 +9,5 @@ else python manage.py makemigrations --noinput python manage.py migrate --noinput python manage.py collectstatic --noinput - gunicorn "$APP_NAME".wsgi:application --bind "$APP_HOST":"$APP_PORT" --workers 3 --log-level=debug + gunicorn "$APP_NAME".wsgi:application --bind "$APP_HOST":"$APP_PORT" --workers 3 --log-level=info fi diff --git a/pyproject.toml b/pyproject.toml index d5d240f..4a89f7e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,7 +57,7 @@ target-version = ['py311'] include = '\.pyi?$' # 'extend-exclude' excludes files or directories in addition to the defaults extend-exclude = ''' -^/migrations/ +^(.*/)?migrations/.*$ ''' @@ -65,7 +65,7 @@ extend-exclude = ''' format = "grouped" line-length = 88 # black default extend-exclude = [ - "*/migrations/*", + "src/migrations/*", "src/media/*", "src/static/*", "src/manage.py", diff --git a/src/requirements.dev.txt b/src/requirements.dev.txt new file mode 100644 index 0000000..692ba9b --- /dev/null +++ b/src/requirements.dev.txt @@ -0,0 +1,4 @@ +-r requirements.txt +black==23.3.0 +ruff==0.0.265 +coverage[toml]==7.2.5