mirror of
https://github.com/thecyberlearn/quantumtaskai-caprover.git
synced 2026-08-18 06:32: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,*
|
||||
CSRF_TRUSTED_ORIGINS=https://your-domain.com,http://your-domain.com
|
||||
|
||||
# Security Settings (for Dokploy)
|
||||
# Security Settings (for Coolify)
|
||||
SECURE_SSL_REDIRECT=false
|
||||
SECURE_PROXY_SSL_HEADER=HTTP_X_FORWARDED_PROTO,https
|
||||
|
||||
# Email Verification
|
||||
# Set to False to bypass email verification for testing (until final domain is ready)
|
||||
# Database Configuration (PostgreSQL for Coolify)
|
||||
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
|
||||
|
||||
# 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
|
||||
NEXT_PUBLIC_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