fix: Coolify-friendly docker-compose with deployment guide
This commit is contained in:
108
COOLIFY_DEPLOYMENT_GUIDE.md
Normal file
108
COOLIFY_DEPLOYMENT_GUIDE.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Coolify Deployment Guide - "Quick Fix" Method
|
||||
|
||||
## Environment Variables (Add in Coolify UI)
|
||||
|
||||
```
|
||||
ADMIN_EMAIL=admin@sparkplatform.com
|
||||
ADMIN_PASSWORD=SecurePass2024!Change
|
||||
DB_USER=sparkuser
|
||||
DB_PASSWORD=DbPass2024!Change
|
||||
DB_DATABASE=directus
|
||||
KEY=nGs2S6Ue/tl03SNao1BIkXPxQtoEIZoUs+roKurD3UlSK8x9XrjyKySWf7tr0ABPkH7SB9wEzYnCDEX4ycB01Q==
|
||||
SECRET=bVu+i1Yqp6aoxpe/o0ySfeE4GSAQCdlitOVCBZklQFcayXPQ1Nwc5jhLUjjrSIJsI1CH6UyRMsLo/fVSIf997w==
|
||||
DIRECTUS_ADMIN_TOKEN=
|
||||
```
|
||||
|
||||
## Deployment Steps
|
||||
|
||||
1. **In Coolify:** Create new Docker Compose deployment
|
||||
2. **Paste the docker-compose.yaml** from this repo
|
||||
3. **Add environment variables** (above)
|
||||
4. **CRUCIAL:** After saving, go to **Service Configuration**:
|
||||
- For `directus` service: Set domain to `spark.jumpstartscaling.com`
|
||||
- For `frontend` service: Set domain to `launch.jumpstartscaling.com`
|
||||
5. **Deploy!**
|
||||
|
||||
## Login
|
||||
|
||||
- URL: https://spark.jumpstartscaling.com
|
||||
- Email: `admin@sparkplatform.com`
|
||||
- Password: `SecurePass2024!Change`
|
||||
|
||||
---
|
||||
|
||||
# "Pro" Method (Recommended for Production)
|
||||
|
||||
## Why Split Services?
|
||||
|
||||
- ✅ Automated database backups to S3/R2
|
||||
- ✅ Independent scaling
|
||||
- ✅ Data persists even if you delete the app
|
||||
- ✅ One-click version upgrades
|
||||
|
||||
## Architecture
|
||||
|
||||
1. **PostgreSQL** (Coolify Managed Database)
|
||||
2. **Redis** (Coolify Managed Database)
|
||||
3. **Directus** (Docker Service)
|
||||
4. **Frontend** (Public Repository)
|
||||
|
||||
## Setup Steps
|
||||
|
||||
### 1. Create Databases
|
||||
|
||||
**PostgreSQL:**
|
||||
- Coolify → Add Resource → PostgreSQL
|
||||
- After creation: Settings → Change image to `postgis/postgis:16-3.4-alpine`
|
||||
- Note the internal URL (e.g., `tcp://uuid:5432`)
|
||||
|
||||
**Redis:**
|
||||
- Coolify → Add Resource → Redis
|
||||
- Note the internal URL (e.g., `tcp://uuid:6379`)
|
||||
|
||||
### 2. Deploy Directus
|
||||
|
||||
- Add Resource → Docker-based
|
||||
- **Environment Variables:**
|
||||
```
|
||||
KEY=nGs2S6Ue/tl03SNao1BIkXPxQtoEIZoUs+roKurD3UlSK8x9XrjyKySWf7tr0ABPkH7SB9wEzYnCDEX4ycB01Q==
|
||||
SECRET=bVu+i1Yqp6aoxpe/o0ySfeE4GSAQCdlitOVCBZklQFcayXPQ1Nwc5jhLUjjrSIJsI1CH6UyRMsLo/fVSIf997w==
|
||||
ADMIN_EMAIL=admin@sparkplatform.com
|
||||
ADMIN_PASSWORD=SecurePass2024!Change
|
||||
DB_CLIENT=postgres
|
||||
DB_HOST=<postgres-internal-host>
|
||||
DB_PORT=5432
|
||||
DB_DATABASE=directus
|
||||
DB_USER=<from-postgres-service>
|
||||
DB_PASSWORD=<from-postgres-service>
|
||||
PUBLIC_URL=https://spark.jumpstartscaling.com
|
||||
CORS_ENABLED=true
|
||||
CORS_ORIGIN=https://launch.jumpstartscaling.com
|
||||
```
|
||||
- **Domain:** `spark.jumpstartscaling.com`
|
||||
|
||||
### 3. Deploy Frontend
|
||||
|
||||
- Add Resource → Public Repository
|
||||
- Point to: `https://gitthis.jumpstartscaling.com/gatekeeper/net.git`
|
||||
- **Build Pack:** Nixpacks or Dockerfile
|
||||
- **Build Environment Variables:**
|
||||
```
|
||||
PUBLIC_DIRECTUS_URL=https://spark.jumpstartscaling.com
|
||||
PUBLIC_PLATFORM_DOMAIN=launch.jumpstartscaling.com
|
||||
```
|
||||
- **Domain:** `launch.jumpstartscaling.com`
|
||||
|
||||
## Traffic Flow
|
||||
|
||||
```
|
||||
User Browser → launch.jumpstartscaling.com (Frontend)
|
||||
→ spark.jumpstartscaling.com (Directus API)
|
||||
|
||||
Directus → tcp://postgres-uuid:5432 (Internal)
|
||||
→ tcp://redis-uuid:6379 (Internal)
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
Would you like me to help migrate your existing data from the docker-compose volumes to Coolify Managed Databases?
|
||||
@@ -1,7 +1,7 @@
|
||||
services:
|
||||
postgresql:
|
||||
image: 'postgis/postgis:16-3.4-alpine'
|
||||
platform: linux/amd64
|
||||
restart: always
|
||||
volumes:
|
||||
- 'postgres-data:/var/lib/postgresql/data'
|
||||
environment:
|
||||
@@ -9,28 +9,26 @@ services:
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_DB: ${DB_DATABASE}
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', 'pg_isready -U ${DB_USER} -d ${DB_DATABASE}']
|
||||
test: [ 'CMD-SHELL', 'pg_isready -U ${DB_USER} -d ${DB_DATABASE}' ]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- default
|
||||
|
||||
redis:
|
||||
image: 'redis:7-alpine'
|
||||
command: 'redis-server --appendonly yes'
|
||||
restart: always
|
||||
volumes:
|
||||
- 'redis-data:/data'
|
||||
healthcheck:
|
||||
test: ['CMD', 'redis-cli', 'ping']
|
||||
test: [ 'CMD', 'redis-cli', 'ping' ]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- default
|
||||
|
||||
directus:
|
||||
image: 'directus/directus:11'
|
||||
restart: always
|
||||
volumes:
|
||||
- 'directus-uploads:/directus/uploads'
|
||||
- 'directus-extensions:/directus/extensions'
|
||||
@@ -51,15 +49,8 @@ services:
|
||||
CORS_ENABLED: 'true'
|
||||
CORS_ORIGIN: 'https://launch.jumpstartscaling.com,http://localhost:4321'
|
||||
PUBLIC_URL: 'https://spark.jumpstartscaling.com'
|
||||
labels:
|
||||
- 'traefik.enable=true'
|
||||
- 'traefik.http.routers.directus.rule=Host(`spark.jumpstartscaling.com`)'
|
||||
- 'traefik.http.routers.directus.entrypoints=https'
|
||||
- 'traefik.http.routers.directus.tls.certresolver=letsencrypt'
|
||||
- 'traefik.http.services.directus.loadbalancer.server.port=8055'
|
||||
- 'traefik.docker.network=coolify'
|
||||
healthcheck:
|
||||
test: ['CMD', 'wget', '--no-verbose', '--tries=1', '--spider', 'http://localhost:8055/server/health']
|
||||
test: [ 'CMD', 'wget', '--no-verbose', '--tries=1', '--spider', 'http://localhost:8055/server/health' ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
@@ -69,39 +60,21 @@ services:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
networks:
|
||||
- coolify
|
||||
- default
|
||||
|
||||
frontend:
|
||||
build:
|
||||
context: ./frontend
|
||||
dockerfile: Dockerfile
|
||||
restart: always
|
||||
environment:
|
||||
PUBLIC_DIRECTUS_URL: 'https://spark.jumpstartscaling.com'
|
||||
DIRECTUS_ADMIN_TOKEN: ${DIRECTUS_ADMIN_TOKEN}
|
||||
PUBLIC_PLATFORM_DOMAIN: 'launch.jumpstartscaling.com'
|
||||
labels:
|
||||
- 'traefik.enable=true'
|
||||
- 'traefik.http.routers.frontend.rule=Host(`launch.jumpstartscaling.com`)'
|
||||
- 'traefik.http.routers.frontend.entrypoints=https'
|
||||
- 'traefik.http.routers.frontend.tls.certresolver=letsencrypt'
|
||||
- 'traefik.http.services.frontend.loadbalancer.server.port=4321'
|
||||
- 'traefik.docker.network=coolify'
|
||||
depends_on:
|
||||
- directus
|
||||
networks:
|
||||
- coolify
|
||||
- default
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
redis-data:
|
||||
directus-uploads:
|
||||
directus-extensions:
|
||||
|
||||
networks:
|
||||
coolify:
|
||||
external: true
|
||||
default:
|
||||
driver: bridge
|
||||
|
||||
Reference in New Issue
Block a user