mirror of
https://github.com/thecyberlearn/quantumtaskai-caprover.git
synced 2026-08-18 12:12:55 +00:00
Add Coolify deployment configuration
- Add Dockerfile with PostgreSQL support and static file collection - Add docker-compose.yml for multi-service deployment with PostgreSQL - Update .env.example with Coolify-specific environment variables - Fix syntax errors in authentication/models.py - Add comprehensive deployment guide in coolify-deploy.md 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
f048025ff0
commit
e70ba5a8df
30
.env.example
30
.env.example
@ -5,31 +5,21 @@ DOMAIN=your-domain.com
|
|||||||
ALLOWED_HOSTS=your-domain.com,*
|
ALLOWED_HOSTS=your-domain.com,*
|
||||||
CSRF_TRUSTED_ORIGINS=https://your-domain.com,http://your-domain.com
|
CSRF_TRUSTED_ORIGINS=https://your-domain.com,http://your-domain.com
|
||||||
|
|
||||||
# Security Settings (for Dokploy)
|
# Security Settings (for Coolify)
|
||||||
SECURE_SSL_REDIRECT=false
|
SECURE_SSL_REDIRECT=false
|
||||||
SECURE_PROXY_SSL_HEADER=HTTP_X_FORWARDED_PROTO,https
|
SECURE_PROXY_SSL_HEADER=HTTP_X_FORWARDED_PROTO,https
|
||||||
|
|
||||||
# Email Verification
|
# Database Configuration (PostgreSQL for Coolify)
|
||||||
# Set to False to bypass email verification for testing (until final domain is ready)
|
DATABASE_URL=postgresql://postgres:your-postgres-password@db:5432/quantumtasks
|
||||||
|
POSTGRES_DB=quantumtasks
|
||||||
|
POSTGRES_USER=postgres
|
||||||
|
POSTGRES_PASSWORD=your-postgres-password
|
||||||
|
|
||||||
|
# Email Configuration (Optional)
|
||||||
|
EMAIL_HOST_USER=your-email@gmail.com
|
||||||
|
EMAIL_HOST_PASSWORD=your-app-password
|
||||||
REQUIRE_EMAIL_VERIFICATION=True
|
REQUIRE_EMAIL_VERIFICATION=True
|
||||||
|
|
||||||
# Database Configuration
|
|
||||||
# Default: SQLite (simple, reliable, no setup required)
|
|
||||||
# Railway: Automatically uses PostgreSQL via DATABASE_URL
|
|
||||||
|
|
||||||
# To use PostgreSQL locally (optional - for production parity):
|
|
||||||
# 1. Set up PostgreSQL (see docs/POSTGRESQL_SETUP.md)
|
|
||||||
# 2. Uncomment one of these options:
|
|
||||||
|
|
||||||
# Option 1: Use DATABASE_URL (explicit)
|
|
||||||
DATABASE_URL=postgresql://user:password@host:port/database
|
|
||||||
|
|
||||||
# Option 2: Use PostgreSQL flag (uses default credentials)
|
|
||||||
# USE_POSTGRESQL=True
|
|
||||||
|
|
||||||
# Option 3: Force SQLite (override auto-detection)
|
|
||||||
# DATABASE_URL=sqlite:///db.sqlite3
|
|
||||||
|
|
||||||
# External API Keys
|
# External API Keys
|
||||||
NEXT_PUBLIC_OPENWEATHER_API_KEY=your_openweather_api_key_here
|
NEXT_PUBLIC_OPENWEATHER_API_KEY=your_openweather_api_key_here
|
||||||
OPENWEATHER_API_KEY=your_openweather_api_key_here
|
OPENWEATHER_API_KEY=your_openweather_api_key_here
|
||||||
|
|||||||
32
Dockerfile
Normal file
32
Dockerfile
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
FROM python:3.11-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install system dependencies
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
gcc \
|
||||||
|
libpq-dev \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Copy and install Python dependencies
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Copy application code
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Set environment variables
|
||||||
|
ENV PYTHONUNBUFFERED=1
|
||||||
|
ENV SECRET_KEY="build-time-dummy-key-change-in-production"
|
||||||
|
|
||||||
|
# Collect static files
|
||||||
|
RUN python manage.py collectstatic --noinput
|
||||||
|
|
||||||
|
# Create directory for media files
|
||||||
|
RUN mkdir -p /app/media
|
||||||
|
|
||||||
|
# Expose port
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
# Run migrations and start server
|
||||||
|
CMD ["sh", "-c", "python manage.py migrate && gunicorn netcop_hub.wsgi:application --bind 0.0.0.0:80"]
|
||||||
56
coolify-deploy.md
Normal file
56
coolify-deploy.md
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
# Coolify Deployment Guide
|
||||||
|
|
||||||
|
## Quick Setup Steps
|
||||||
|
|
||||||
|
### 1. Create New Project in Coolify
|
||||||
|
- Go to your Coolify dashboard
|
||||||
|
- Create a new project
|
||||||
|
- Choose "Deploy from Git Repository"
|
||||||
|
- Connect your GitHub repository
|
||||||
|
|
||||||
|
### 2. Configure Environment Variables
|
||||||
|
Set these in Coolify's environment variables section:
|
||||||
|
|
||||||
|
```env
|
||||||
|
SECRET_KEY=your-secret-key-here-generate-50-random-characters
|
||||||
|
DEBUG=false
|
||||||
|
ALLOWED_HOSTS=your-coolify-domain.com
|
||||||
|
DATABASE_URL=postgresql://postgres:password@db:5432/quantumtasks
|
||||||
|
POSTGRES_DB=quantumtasks
|
||||||
|
POSTGRES_USER=postgres
|
||||||
|
POSTGRES_PASSWORD=your-secure-password
|
||||||
|
```
|
||||||
|
|
||||||
|
Optional variables:
|
||||||
|
```env
|
||||||
|
EMAIL_HOST_USER=your-email@gmail.com
|
||||||
|
EMAIL_HOST_PASSWORD=your-app-password
|
||||||
|
STRIPE_SECRET_KEY=sk_test_your_stripe_key
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Database Setup
|
||||||
|
Coolify will automatically create a PostgreSQL database using the docker-compose.yml configuration.
|
||||||
|
|
||||||
|
### 4. Deploy
|
||||||
|
- Push your code to the connected repository
|
||||||
|
- Coolify will automatically build and deploy
|
||||||
|
- The app will be available on port 3000
|
||||||
|
|
||||||
|
## File Structure Created
|
||||||
|
- `Dockerfile` - Main container configuration
|
||||||
|
- `docker-compose.yml` - Multi-service setup with PostgreSQL
|
||||||
|
- `.env.example` - Updated environment variable template
|
||||||
|
|
||||||
|
## Features Included
|
||||||
|
- ✅ PostgreSQL database
|
||||||
|
- ✅ Static file serving with WhiteNoise
|
||||||
|
- ✅ Automatic migrations on startup
|
||||||
|
- ✅ Gunicorn production server
|
||||||
|
- ✅ Volume persistence for media files
|
||||||
|
|
||||||
|
## Post-Deployment
|
||||||
|
1. Create superuser: Access the container and run `python manage.py createsuperuser`
|
||||||
|
2. Configure domain in Coolify dashboard
|
||||||
|
3. Set up SSL certificate (Coolify handles this automatically)
|
||||||
|
|
||||||
|
Your Django app will be ready at your configured Coolify domain!
|
||||||
34
docker-compose.yml
Normal file
34
docker-compose.yml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "3000:80"
|
||||||
|
environment:
|
||||||
|
- SECRET_KEY=${SECRET_KEY}
|
||||||
|
- DEBUG=${DEBUG:-false}
|
||||||
|
- ALLOWED_HOSTS=${ALLOWED_HOSTS}
|
||||||
|
- DATABASE_URL=${DATABASE_URL}
|
||||||
|
- EMAIL_HOST_USER=${EMAIL_HOST_USER:-}
|
||||||
|
- EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD:-}
|
||||||
|
- STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY:-}
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
volumes:
|
||||||
|
- static_volume:/app/staticfiles
|
||||||
|
- media_volume:/app/media
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres:15
|
||||||
|
environment:
|
||||||
|
- POSTGRES_DB=${POSTGRES_DB:-quantumtasks}
|
||||||
|
- POSTGRES_USER=${POSTGRES_USER:-postgres}
|
||||||
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
|
volumes:
|
||||||
|
- postgres_data:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres_data:
|
||||||
|
static_volume:
|
||||||
|
media_volume:
|
||||||
Loading…
Reference in New Issue
Block a user