Move your self-hosted Docker Compose setup to RaidFrame with one command.
If you're running Docker Compose on a VPS, you already have everything you need to deploy on RaidFrame. Your Dockerfiles work as-is. The migration adds auto-scaling, managed databases, SSL, monitoring, and zero-ops maintenance.
curl -fsSL https://get.raidframe.com | sh
rf auth login
rf init --from docker-compose
Reading docker-compose.yml...
Found 4 services:
web (build: ./web, ports: 3000) → web service
api (build: ./api, ports: 8080) → web service
worker (build: ./worker) → worker service
postgres (image: postgres:16) → managed database
Found 2 volumes:
postgres_data → managed database (auto)
uploads → object storage bucket
Generated: raidframe.yaml
Review and deploy: rf deploy
The importer reads your docker-compose.yml and creates an equivalent raidframe.yaml, replacing self-managed services (Postgres, Redis, Nginx) with managed equivalents.
version: "3.8"
services:
web:
build: ./web
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://user:pass@postgres:5432/myapp
- REDIS_URL=redis://redis:6379
depends_on:
- postgres
- redis
api:
build: ./api
ports:
- "8080:8080"
environment:
- DATABASE_URL=postgresql://user:pass@postgres:5432/myapp
worker:
build: ./worker
environment:
- DATABASE_URL=postgresql://user:pass@postgres:5432/myapp
- REDIS_URL=redis://redis:6379
postgres:
image: postgres:16
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=myapp
redis:
image: redis:7-alpine
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
volumes:
postgres_data:
project: my-app
region: us-east-1
services:
web:
type: web
build:
context: ./web
port: 3000
scaling:
min: 2
max: 10
api:
type: web
build:
context: ./api
port: 8080
scaling:
min: 1
max: 5
worker:
type: worker
build:
context: ./worker
databases:
main:
engine: postgres
version: "16"
cache:
engine: redis
version: "7.2"
What changed:
| Docker Compose | RaidFrame |
|---|---|
postgres service (self-managed) | Managed PostgreSQL (backups, replicas, pooling) |
redis service (self-managed) | Managed Redis (persistence, failover) |
nginx service (reverse proxy) | Built-in load balancer + SSL |
| Manual SSL (certbot) | Automatic SSL (Let's Encrypt) |
depends_on | Automatic service discovery |
| Docker volumes | Managed database storage |
| Manual scaling | Auto-scaling |
| No monitoring | Built-in logs, metrics, traces |
# Export from your VPS
ssh your-vps "docker exec postgres pg_dump -U postgres myapp" > backup.sql
# Import to RaidFrame
rf db import main backup.sql
# Copy files from VPS to RaidFrame storage
rf add storage
scp -r your-vps:/data/uploads ./uploads
rf storage sync ./uploads s3://my-app-uploads/
rf deploy
rf domains add myapp.com
Update your DNS A/CNAME record from your VPS IP to RaidFrame.
| Before (VPS) | After (RaidFrame) |
|---|---|
| OS security patches | Managed |
| Docker engine updates | Managed |
| PostgreSQL backups | Automatic (daily, 30-day retention) |
| SSL certificate renewal | Automatic |
| Nginx configuration | Not needed (built-in LB) |
| Disk space monitoring | Not needed (auto-scaling) |
| Uptime monitoring | Built-in |
| Log aggregation | Built-in |
| Firewall rules | Built-in |
| DDoS mitigation | Built-in |
Estimated time saved: 10-20 hours/month in operations overhead.