Make template 100% clone-and-deploy ready

This commit is contained in:
amitrana01 2025-09-11 18:59:17 +05:30
parent 85ebac761d
commit 4aee6ea9f0
4 changed files with 118 additions and 5 deletions

110
QUICK_DEPLOY.md Normal file
View File

@ -0,0 +1,110 @@
# 🚀 Quick Deploy Guide - Zero Changes Needed!
This Django template is designed to deploy **without any code changes** - just set environment variables!
## ✅ **Clone and Deploy in 3 Steps**
### **Step 1: Clone Repository**
```bash
git clone https://github.com/your-username/django-template.git
cd django-template
```
### **Step 2: Set Environment Variables in Dokploy**
Set these **4 required variables** in Dokploy environment tab:
```env
DOMAIN_NAME=yourdomain.com
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com
CSRF_TRUSTED_ORIGINS=https://yourdomain.com
SECRET_KEY=your-secret-key-here
```
**Optional variables:**
```env
DEBUG=False
SECURE_SSL_REDIRECT=True
GOOGLE_OAUTH2_CLIENT_ID=your-google-client-id
GOOGLE_OAUTH2_CLIENT_SECRET=your-google-client-secret
```
### **Step 3: Deploy**
1. **Dokploy Compose Path**: `./docker-compose.dokploy-simple.yml`
2. **Domain**: Set in Dokploy UI (service=web, port=8000)
3. **Deploy** 🚀
## 🎯 **That's It! No Code Changes Required!**
### **Default Values** (works out-of-the-box for testing):
- **DOMAIN_NAME**: `localhost`
- **ALLOWED_HOSTS**: `localhost,127.0.0.1`
- **CSRF_TRUSTED_ORIGINS**: `http://localhost:8000`
- **SECRET_KEY**: Development key (change for production!)
- **DEBUG**: `True` (change to `False` for production)
### **What Happens Automatically:**
✅ Database migrations run
✅ User groups created (admin, staff, user)
✅ Site configured with your domain
✅ Social apps set up
✅ Static files collected
✅ Gunicorn starts serving your app
## 🔧 **For Different Deployment Platforms**
### **With Docker Database (Default)**
- **Compose file**: `docker-compose.dokploy-simple.yml`
- **Database**: Included PostgreSQL container
- **Storage**: Docker volumes for persistence
### **With External Database**
- **Compose file**: `docker-compose.dokploy-external-db.yml`
- **Database**: Set `DATABASE_URL` environment variable
- **Examples**: Neon, Supabase, Railway, etc.
## 🧪 **Test Locally First** (Optional)
```bash
# 1. Set environment variables
export DOMAIN_NAME=localhost
export ALLOWED_HOSTS=localhost,127.0.0.1
export SECRET_KEY=test-secret-key
# 2. Test with Docker
docker-compose -f docker-compose.dokploy-simple.yml up
# 3. Visit http://localhost:8000
```
## 🎉 **Environment Variable Examples**
### **For `myapp.com`:**
```env
DOMAIN_NAME=myapp.com
ALLOWED_HOSTS=myapp.com,www.myapp.com
CSRF_TRUSTED_ORIGINS=https://myapp.com,https://www.myapp.com
SECRET_KEY=super-long-secret-key-generate-new-one
DEBUG=False
SECURE_SSL_REDIRECT=True
```
### **For `app.example.org`:**
```env
DOMAIN_NAME=app.example.org
ALLOWED_HOSTS=app.example.org
CSRF_TRUSTED_ORIGINS=https://app.example.org
SECRET_KEY=another-unique-secret-key
DEBUG=False
SECURE_SSL_REDIRECT=True
```
## ⚡ **Why This Works**
- ✅ **No hardcoded domains** - everything uses environment variables
- ✅ **Sensible defaults** - works locally without any setup
- ✅ **Production ready** - just change a few env vars
- ✅ **Platform agnostic** - works on Dokploy, Railway, Heroku, etc.
---
**Clone ➜ Set 4 env vars ➜ Deploy ➜ Done!** 🚀

View File

@ -5,11 +5,12 @@ services:
- "8000:8000"
environment:
- DEBUG=False
- ALLOWED_HOSTS=dt.netcoptech.com,localhost,127.0.0.1
- ALLOWED_HOSTS=${ALLOWED_HOSTS:-localhost,127.0.0.1}
- DATABASE_URL=${DATABASE_URL}
- SECRET_KEY=${SECRET_KEY}
- DJANGO_SETTINGS_MODULE=django_project.settings.production
- CSRF_TRUSTED_ORIGINS=https://dt.netcoptech.com
- CSRF_TRUSTED_ORIGINS=${CSRF_TRUSTED_ORIGINS:-http://localhost:8000}
- DOMAIN_NAME=${DOMAIN_NAME:-localhost}
- SECURE_SSL_REDIRECT=True
- GOOGLE_OAUTH2_CLIENT_ID=${GOOGLE_OAUTH2_CLIENT_ID:-demo-google-client-id}
- GOOGLE_OAUTH2_CLIENT_SECRET=${GOOGLE_OAUTH2_CLIENT_SECRET:-demo-google-client-secret}

View File

@ -5,11 +5,12 @@ services:
- "8000:8000"
environment:
- DEBUG=True
- ALLOWED_HOSTS=dt.netcoptech.com,localhost,127.0.0.1
- ALLOWED_HOSTS=${ALLOWED_HOSTS:-localhost,127.0.0.1}
- DATABASE_URL=${DATABASE_URL:-postgresql://django_user:django_password@db:5432/django_db}
- SECRET_KEY=${SECRET_KEY:-django-insecure-change-this-key}
- DJANGO_SETTINGS_MODULE=django_project.settings.production
- CSRF_TRUSTED_ORIGINS=https://dt.netcoptech.com,http://dt.netcoptech.com
- CSRF_TRUSTED_ORIGINS=${CSRF_TRUSTED_ORIGINS:-http://localhost:8000}
- DOMAIN_NAME=${DOMAIN_NAME:-localhost}
- SECURE_SSL_REDIRECT=False
- GOOGLE_OAUTH2_CLIENT_ID=${GOOGLE_OAUTH2_CLIENT_ID:-demo-google-client-id}
- GOOGLE_OAUTH2_CLIENT_SECRET=${GOOGLE_OAUTH2_CLIENT_SECRET:-demo-google-client-secret}

View File

@ -20,7 +20,8 @@ echo "🔗 Setting up social applications..."
python manage.py setup_social_apps
echo "🏠 Configuring site domain..."
python manage.py configure_site --domain=dt.netcoptech.com --name="Django Template"
DOMAIN_NAME=${DOMAIN_NAME:-localhost}
python manage.py configure_site --domain="$DOMAIN_NAME" --name="Django Template"
echo "📁 Collecting static files..."
python manage.py collectstatic --noinput