-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrender.yaml
More file actions
123 lines (118 loc) · 3.58 KB
/
render.yaml
File metadata and controls
123 lines (118 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Render Blueprint — SkyModderAI deployment
# Production-ready configuration for 100K+ users
# https://render.com/docs/blueprint-spec
databases:
- name: skymodderai-db
databaseName: skymodderai
user: skymodderai_user
plan: standard-0 # $50/month - Required for 100K+ users (10GB, connection pooling)
diskSize: 10 # GB
services:
# Main Web Service
- type: web
name: skymodderai-web
runtime: python
plan: standard-2x # 2x CPU/RAM for production
buildCommand: |
pip install -r requirements.txt
python loot_parser.py skyrimse fallout4 # Pre-download LOOT data
startCommand: gunicorn --bind 0.0.0.0:$PORT --timeout 120 --workers 4 --threads 4 app:app
healthCheckPath: /healthz
envVars:
- key: FLASK_ENV
value: production
- key: SECRET_KEY
generateValue: true
- key: DATABASE_URL
fromDatabase:
name: skymodderai-db
property: connectionString
- key: REDIS_URL
fromService:
type: redis
name: skymodderai-redis
property: connectionString
# Production connection pooling (scaled for 100K users)
- key: SQLALCHEMY_POOL_SIZE
value: "20"
- key: SQLALCHEMY_MAX_OVERFLOW
value: "40"
- key: SQLALCHEMY_POOL_TIMEOUT
value: "30"
- key: SQLALCHEMY_POOL_RECYCLE
value: "300"
- key: SQLALCHEMY_POOL_PRE_PING
value: "true"
# Feature flags
- key: SKYMODDERAI_OPENCLAW_ENABLED
value: "0"
- key: OPENCLAW_SANDBOX_ROOT
value: "./openclaw_workspace"
# Optional env vars (set in Render dashboard)
- key: STRIPE_SECRET_KEY
sync: false
- key: STRIPE_PRO_PRICE_ID
sync: false
- key: STRIPE_OPENCLAW_PRICE_ID
sync: false
- key: STRIPE_WEBHOOK_SECRET
sync: false
- key: MAIL_FROM
sync: false
- key: MAIL_HOST
sync: false
- key: MAIL_PORT
sync: false
- key: MAIL_USER
sync: false
- key: MAIL_PASSWORD
sync: false
- key: SENTRY_DSN
sync: false
- key: OPENAI_API_KEY
sync: false
# Celery Worker for Background Jobs
- type: worker
name: skymodderai-worker
runtime: python
plan: standard-2x
buildCommand: pip install -r requirements.txt
startCommand: celery -A celery_worker.celery worker --loglevel=info --concurrency=4
envVars:
- key: FLASK_ENV
value: production
- key: DATABASE_URL
fromDatabase:
name: skymodderai-db
property: connectionString
- key: REDIS_URL
fromService:
type: redis
name: skymodderai-redis
property: connectionString
- key: OPENAI_API_KEY
sync: false
# Celery Beat for Scheduled Tasks
- type: worker
name: skymodderai-beat
runtime: python
plan: starter # Minimal resources for scheduler
buildCommand: pip install -r requirements.txt
startCommand: celery -A celery_worker.celery beat --loglevel=info
envVars:
- key: FLASK_ENV
value: production
- key: DATABASE_URL
fromDatabase:
name: skymodderai-db
property: connectionString
- key: REDIS_URL
fromService:
type: redis
name: skymodderai-redis
property: connectionString
# Redis for Caching and Rate Limiting (REQUIRED for production)
redis:
- name: skymodderai-redis
plan: starter # 25MB, 200 connections - upgrade to standard at 100K users
maxmemoryPolicy: allkeys-lru # Evict least recently used keys when full