Files
wehub-resource-sync bb5c75ce05
Component Security Validation / Security Audit (push) Has been cancelled
Deploy to Cloudflare Pages / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:38:58 +08:00

5.2 KiB

Deployment Details

Use this reference for service discovery, configuration patterns, quick commands, and common issues.

Service Discovery

List all services:

list_services()

Returns all services with IDs, names, types, and status.

Get specific service details:

get_service(serviceId: "<id>")

Returns full configuration including environment variables and build/start commands.

List PostgreSQL databases:

list_postgres_instances()

List Key-Value stores:

list_key_value()

Configuration Details

Environment Variables

All environment variables must be declared in render.yaml.

Three patterns for environment variables:

  1. Hardcoded values (non-sensitive configuration):
envVars:
  - key: NODE_ENV
    value: production
  - key: API_URL
    value: https://api.example.com
  1. Database connections (auto-generated):
envVars:
  - key: DATABASE_URL
    fromDatabase:
      name: postgres
      property: connectionString
  - key: REDIS_URL
    fromDatabase:
      name: redis
      property: connectionString
  1. Secrets (user fills in Dashboard):
envVars:
  - key: JWT_SECRET
    sync: false
  - key: API_KEY
    sync: false
  - key: STRIPE_SECRET_KEY
    sync: false

Complete environment variable guide: configuration-guide.md

Port Binding

CRITICAL: Web services must bind to 0.0.0.0:$PORT (NOT localhost). Render sets the PORT environment variable.

Node.js Example:

const PORT = process.env.PORT || 3000;
app.listen(PORT, '0.0.0.0', () => {
  console.log(`Server running on port ${PORT}`);
});

Python Example:

import os

port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)

Go Example:

port := os.Getenv("PORT")
if port == "" {
    port = "3000"
}
http.ListenAndServe(":"+port, handler)

Plan Defaults

Use plan: free unless the user specifies otherwise. Refer to Render pricing for current limits and capacity.

Build Commands

Use non-interactive flags to prevent build hangs:

  • npm: npm ci
  • yarn: yarn install --frozen-lockfile
  • pnpm: pnpm install --frozen-lockfile
  • bun: bun install --frozen-lockfile
  • pip: pip install -r requirements.txt
  • uv: uv sync
  • apt: apt-get install -y <package>
  • bundler: bundle install --jobs=4 --retry=3

Database Connections

When services connect to databases in the same Render account, use fromDatabase references for internal URLs.

Health Checks

Optional but recommended: add a /health endpoint for faster deployment detection.

Quick Reference

MCP Tools (Preferred)

# Service Discovery
list_services()
get_service(serviceId: "<id>")
list_postgres_instances()
list_key_value()

# Service Creation
create_web_service(name, runtime, buildCommand, startCommand, ...)
create_static_site(name, buildCommand, publishPath, ...)
create_cron_job(name, runtime, schedule, buildCommand, startCommand, ...)
create_postgres(name, plan, region)
create_key_value(name, plan, region)

# Environment Variables
update_environment_variables(serviceId, envVars: [{key, value}, ...])

# Deployment & Monitoring
list_deploys(serviceId, limit)
list_logs(resource: ["<id>"], level: ["error"])
get_metrics(resourceId, metricTypes: [...])

# Workspace
get_selected_workspace()
list_workspaces()

CLI Commands

# Validate Blueprint
render blueprints validate

# Check workspace
render workspace current -o json
render workspace set

# List services
render services -o json

# View deployment logs
render logs -r <service-id> -o json

# Create deployment
render deploys create <service-id> --wait

Templates by Framework

Documentation

Common Issues

Issue: Deployment fails with port binding error

Solution: Ensure app binds to 0.0.0.0:$PORT (see Port Binding section above)


Issue: Build hangs or times out

Solution: Use non-interactive build commands (see Build Commands section above)


Issue: Missing environment variables in Dashboard

Solution: All env vars must be declared in render.yaml. Add missing vars with sync: false for secrets.


Issue: Database connection fails

Solution: Use fromDatabase references for internal connection strings.


Issue: Static site shows 404 for routes

Solution: Add rewrite rules to render.yaml for SPA routing:

routes:
  - type: rewrite
    source: /*
    destination: /index.html

For more detailed troubleshooting, see the debug skill or configuration-guide.md.