This project is from my Django collaboration.
- Full featured shopping cart
- Product reviews and ratings
- Top products carousel
- Product pagination
- Product search feature
- User profile with orders
- Admin product management
- Admin user management
- Admin Order details page
- Mark orders as delivered option
- Checkout process (shipping, payment method, etc)
- PayPal / credit card integration
- 1 - Clone project: git clone https://github.com/cseshahriar/eshop-backend.git
- 2 - cd eshop-backend
- 3 - Create virtual environment: virtualenv myenv
- 4 - myenv\scripts\activate
- 5 - pip install -r requirements.txt
- 6 - python manage.py runserver
- 1 - Clone project: git clone https://github.com/cseshahriar/eshop-frontend.git
- 2 - cd eshop-frontend
- 3 - npm install
- 4 - npm start
This project demonstrates how to run a Django application with:
✅ PostgreSQL (persistent) ✅ Media & static files (persistent) ✅ Docker & Docker Compose ✅ Zero data loss ✅ Dev & Production friendly setup ✅ Easy backup & restore
- Python: 3.9
- Django: Compatible with Django 4.x+
- PostgreSQL: 15
- Docker Compose: v2+
python3.9 -m venv venv
source venv/bin/activate
# Install dependencies
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
# Database Configuration (Local)
DB_CONFIG = {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'HOST': '127.0.0.1',
'PORT': 5432,
'NAME': 'practice_db',
'USER': 'postgres',
'PASSWORD': 'postgres'
}
# Code Quality (Optional but Recommended)
pip install ruff isort black flake8 pre-commit
pre-commit install
pre-commit autoupdate
pre-commit run --all-files
Reset hooks:
pre-commit clean
pre-commit uninstall
pre-commit install
# Dockerized Django Architecture
Django (Gunicorn)
|
PostgreSQL (Docker Volume)
|
Media Files (Docker Volume)
# Build image
docker compose build
# Run containers
docker compose up -d
# ❌ NEVER DO THIS (Data Loss!)
docker compose down -v
# PostgreSQL Backup & Restore
docker exec -t postgres_db pg_dump -U eshop_user eshop_db > backup.sql
# Backup
docker exec -i postgres_db psql -U eshop_user eshop_db < backup.sql
# Restore
docker exec -i postgres_db psql -U eshop_user eshop_db < backup.sql
# Verify Everything
docker ps
docker volume ls
# Monitoring & Debugging
docker logs -f django_app
docker logs -f postgres_db
# Enter container
docker exec -it django_app /bin/sh
# or
docker exec -it django_app /bin/bash
# Django commands inside container
python manage.py migrate
python manage.py createsuperuser
python manage.py shell
# Dockerhub Login
docker login
# Tag image
docker tag django_app:latest your_dockerhub_username/django_app:latest
# Push
docker push your_dockerhub_username/django_app:latest
# Pull & Run (Production Server)
docker pull your_dockerhub_username/django_app:latest
# run
docker run -d \
--name django_app \
-p 8080:8000 \
--env-file .env \
your_dockerhub_username/django_app:latest
# Docker Compose (Production)
docker compose pull
docker compose up -d
# Useful Docker Commands
| Command | Purpose |
| ------------------------ | ----------------------- |
| `docker ps` | List running containers |
| `docker stop <id>` | Stop container |
| `docker start <id>` | Start container |
| `docker compose up -d` | Start services |
| `docker compose down` | Stop services |
| `docker compose logs -f` | Follow logs |
# Permissions Fix (Common Issue)
chmod +x docker/entrypoint.sh
docker compose build web
docker compose up -d
# Final Result
✔ Django + PostgreSQL Dockerized
✔ Media & DB persistence
✔ No data loss
✔ Production-ready
✔ Easy backup & restore