161 lines
3.8 KiB
Markdown
161 lines
3.8 KiB
Markdown
# Django Docker Quickstart
|
|
|
|
This quickstart provides an easy way to initiate a Django project using Docker. It comes with pre-configured services including PostgreSQL, Redis, Celery (worker and beat), Nginx, and Traefik, ready to run a Django web application. Additionally, it provides a few handy shortcuts for easier development.
|
|
|
|
---
|
|
|
|
## Features 🚀
|
|
|
|
- **Django** web application framework
|
|
- **PostgreSQL** database
|
|
- **Redis** in-memory data structure store
|
|
- **Celery** worker and beat services for running background tasks asynchronously
|
|
- **Nginx** web server for serving static and media files, and proxying requests to the Django application
|
|
- **Traefik** reverse proxy for routing requests to the appropriate service and providing SSL termination
|
|
|
|
## Included Packages and Tools 🛠️
|
|
|
|
- **Pytest**: Testing framework
|
|
- **Pytest Sugar**: A pytest plugin for a better look
|
|
- **Pytest Django**: A pytest plugin providing useful tools for testing Django applications
|
|
- **Coverage**: Test coverage tool
|
|
- **Ruff**: Linter
|
|
- **Black**: Code formatter
|
|
|
|
## Requirements 📋
|
|
|
|
- Docker & Docker Compose - [Install and Use Docker](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04)
|
|
- Python 3.10 or higher
|
|
- Make (optional for shortcuts)
|
|
|
|
---
|
|
|
|
## Getting Started 🏁
|
|
|
|
1. **Clone the repository:**
|
|
```bash
|
|
git clone https://github.com/godd0t/django-docker-quickstart.git
|
|
```
|
|
|
|
2. **Change directory into the project:**
|
|
```bash
|
|
cd django-docker-quickstart
|
|
```
|
|
|
|
3. **Copy the `env.example` file to `.env` and update the values as needed:**
|
|
<br><br/>
|
|
**For Linux/macOS:**
|
|
```bash
|
|
cp env.example .env
|
|
```
|
|
**For Windows (Command Prompt):**
|
|
```cmd
|
|
Copy-Item -Path env.example -Destination .env
|
|
```
|
|
|
|
---
|
|
|
|
## Initial Setup ⚙️
|
|
|
|
### Development Prerequisites
|
|
|
|
1. **Create a virtual environment:**
|
|
```bash
|
|
python -m venv venv
|
|
```
|
|
|
|
2. **Activate the virtual environment:**
|
|
```bash
|
|
source venv/bin/activate
|
|
```
|
|
|
|
3. **(Optional) Install the development requirements specific to your IDE for enhanced functionality and support.**
|
|
```bash
|
|
pip install -r src/requirements-dev.txt
|
|
```
|
|
|
|
4. **Build the image and run the container:**
|
|
<br><br/>
|
|
- If buildkit is not enabled, enable it and build the image:
|
|
```bash
|
|
DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f docker-compose.yml up --build -d
|
|
```
|
|
|
|
- If buildkit is enabled, build the image:
|
|
```bash
|
|
docker-compose -f docker-compose.yml up --build -d
|
|
```
|
|
|
|
- Or, use the shortcut:
|
|
```bash
|
|
make build-dev
|
|
```
|
|
|
|
You can now access the application at http://localhost:8000. The development environment allows for immediate reflection of code changes.
|
|
|
|
### Production Setup
|
|
|
|
1. **Build the image and run the container:**
|
|
<br><br/>
|
|
- If buildkit is not enabled, enable it and build the image:
|
|
```bash
|
|
DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f docker-compose.prod.yml up --build -d
|
|
```
|
|
|
|
- If buildkit is enabled,
|
|
build the image:
|
|
```bash
|
|
docker-compose -f docker-compose.prod.yml up --build -d
|
|
```
|
|
- Or, use the shortcut:
|
|
```bash
|
|
make build-prod
|
|
```
|
|
|
|
---
|
|
|
|
## Shortcuts 🔑
|
|
|
|
This project includes several shortcuts to streamline the development process:
|
|
|
|
- **Create migrations:**
|
|
```bash
|
|
make make-migrations
|
|
```
|
|
|
|
- **Run migrations:**
|
|
```bash
|
|
make migrate
|
|
```
|
|
|
|
- **Run the linter:**
|
|
```bash
|
|
make lint
|
|
```
|
|
|
|
- **Run the formatter:**
|
|
```bash
|
|
make format
|
|
```
|
|
|
|
- **Run the tests:**
|
|
```bash
|
|
make test
|
|
```
|
|
|
|
- **Create a super user:**
|
|
```bash
|
|
make super-user
|
|
```
|
|
|
|
- **Build and run dev environment:**
|
|
```bash
|
|
make build-dev
|
|
```
|
|
|
|
- **Build and run prod environment:**
|
|
```bash
|
|
make build-prod
|
|
```
|
|
---
|