Blueprints
Blueprints are Infrastructure as Code for RailPush. Define your entire stack -- services, databases, Redis, environment variables -- in a single railpush.yaml file. Push to deploy everything at once.
RailPush checks railpush.yaml first and falls back to render.yaml for backward compatibility.
All-or-nothing deploys
Blueprint syncs are atomic. If any resource fails to create, the entire sync is aborted. No partial infrastructure.
How it works
- Add a
railpush.yamlto your repository root - Create a Blueprint in the dashboard and point it to your repo
- RailPush clones your repo, reads the YAML, and provisions everything
- Databases are created first, then services with resolved env vars
- All services are deployed simultaneously after resources are ready
railpush.yaml
services:
- type: web
name: my-api
runtime: node
buildCommand: npm install && npm run build
startCommand: npm start
port: 3000
plan: s
numInstances: 1
healthCheckPath: /healthz
autoDeploy: true
envVars:
- key: NODE_ENV
value: production
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
- key: REDIS_URL
fromService:
name: my-cache
type: keyvalue
property: connectionString
- key: SECRET_KEY
generateValue: true
- fromGroup: shared-config
- type: worker
name: my-worker
runtime: node
buildCommand: npm install
startCommand: npm run worker
envVars:
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
- type: cron
name: nightly-cleanup
runtime: node
buildCommand: npm install
startCommand: node scripts/cleanup.js
schedule: "0 3 * * *"
plan: s
- type: static
name: my-frontend
buildCommand: npm install && npm run build
staticPublishPath: ./dist
databases:
- name: my-db
plan: s
postgresMajorVersion: 16
keyValues:
- name: my-cache
plan: s
maxmemoryPolicy: allkeys-lru
envVarGroups:
- name: shared-config
envVars:
- key: APP_ENV
value: production