devops/deploy-render
/devops/deploy-render
Wdraża aplikacje full-stack na Render według pliku render.yaml, w tym usługi webowe, workery, strony i bazy.
- Autor
- echovic ↗
- Repozytorium
- boss-skill ↗
- Licencja
- MIT
- Ostatnia zmiana repozytorium
- 27.10.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 1
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 1
Brak sygnałów. Repozytorium zmienione 27.10.2026, bez odwołań do wycofanych modeli i API.
MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.
Co robi i kiedy
Wdraża aplikacje full-stack na Render według pliku render.yaml, w tym usługi webowe, workery, strony i bazy.
Oryginalny opis (EN)
Render 部署方法论,使用 render.yaml 蓝图和 Render CLI 部署全栈应用(Web 服务、Worker、静态站点、数据库)
Jak działa
- 适用场景
- 前置条件
- 部署方式
- 一、render.yaml 蓝图
- 二、部署流程
- CI/CD 集成
- 项目类型适配
- 检查清单
Podgląd SKILL.md
---
name: devops/deploy-render
description: Render 部署方法论,使用 render.yaml 蓝图和 Render CLI 部署全栈应用(Web 服务、Worker、静态站点、数据库)
version: 1.0.0
agent: devops
type: methodology
user-invocable: false
agent-invocable: true
dependencies:
- shared/tech-stack-detection
triggers:
- 需要部署到 Render 时
- 项目是全栈应用且需要数据库时
- 项目使用 Docker 容器部署时
metadata:
internal: true
---
# Render 部署
## 适用场景
- **全栈 Web 应用**:Node.js、Python、Go、Ruby、Rust 后端 + 数据库
- **静态站点**:前端 SPA、文档站点
- **后台 Worker**:异步任务处理、定时任务
- **Docker 化应用**:通过 Dockerfile 部署任意语言应用
- 需要托管 PostgreSQL/Redis 的场景
## 前置条件
1. Render 账号:https://render.com
2. 安装 Render CLI(可选,主要通过 render.yaml 蓝图管理)
3. 项目代码托管在 GitHub/GitLab/Bitbucket(Render 通过 Git 集成部署)
## 部署方式
Render 支持两种部署方式:
1. **render.yaml 蓝图(推荐)**:基础设施即代码,一键创建所有服务和数据库
2. **Dashboard 手动创建**:通过 Web 界面逐个创建服务
## 一、render.yaml 蓝图
`render.yaml` 放在项目根目录,定义所有基础设施。
### 完整示例(全栈应用)
```yaml
services:
# 前端静态站点
- type: web
name: my-frontend
env: static
buildCommand: npm ci && npm run build
staticPublishPath: dist
routes:
- type: rewrite
source: /*
destination: /index.html
# 后端 API 服务
- type: web
name: my-api
env: node
buildCommand: npm ci && npm run build
startCommand: npm start
healthCheckPath: /health
envVars:
- key: NODE_ENV
value: production
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
- key: API_KEY
sync: false # 需要在 Dashboard 手动设置
# 后台 Worker
- type: worker
name: my-worker
env: node
buildCommand: npm ci
startCommand: npm run worker
envVars:
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
databases:
- name: my-db
databaseName: myapp
user: myapp
plan: free # free | starter | standard | pro
ipAllowList:
- source: 0.0.0.0/0
description: allow all (仅开发环境)
```
### 各类型服务配置
#### 1. 静态站点
```yaml
services:
- type: web
name: my-site
env: static
buildCommand: npm run build
staticPublishPath: dist
headers:
- path: /*
name: X-Frame-Options
value: DENY
```
#### 2. Node.js Web 服务
```yaml
services:
- type: web
name: my-api
env: node
plan: standard
buildCommand: npm ci && npm run build
startCommand: node dist/server.js
healthCheckPath: /health
autoDeploy: true
branch: main
numInstances: 1
```
#### 3. Docker 服务
```yaml
services:
- type: web
name: my-app
env: docker
dockerfilePath: ./Dockerfile
dockerContext: .
dockerCommand: ./start.sh
healthCheckPath: /health
```
#### 4. Python Web 服务
```yaml
services:
- type: web
name: my-api
env: python
buildCommand: pip install -r requirements.txt
startCommand: gunicorn app:app
healthCheckPath: /health
```
#### 5. Go Web 服务
```yaml
services:
- type: web
name: my-api
env: go
buildCommand: go build -o server
startCommand: ./server
healthCheckPath: /health
```
#### 6. 后台 Worker
```yaml
services:
- type: worker
name: my-worker
env: node
buildCommand: npm ci
startCommand: npm run worker
```
#### 7. 定时任务(Cron Job)
```yaml
services:
- type: cron
name: my-cron
env: node
schedule: "0 2 * * *" # 每天凌晨 2 点
buildCommand: npm ci
startCommand: npm run cron
```
### 数据库配置
```yaml
databases:
- name: my-postgres
databaseName: myapp
user: myapp
plan: starter
version: "16"
ipAllowList:
- source: 10.0.0.0/8
description: internal
- name: my-redis
type: redis
plan: starter
maxmemoryPolicy: allkeys-lru
```
### 环境变量
```yaml
envVars:
# 静态值
- key: NODE_ENV
value: production
# 从服务组同步(所有服务共享)
- key: SHARED_KEY
sync: true
value: some-value
# 从另一个服务获取
- key: API_URL
fromService:
type: web
name: my-api
property: host
# 从数据库获取连接串
- key: DATABASE_URL
fromDatabase:
name: my-db
property: connectionString
# 需要手动设置的密钥
- key: STRIPE_SECRET_KEY
sync: false
```
## 二、部署流程
### 通过 Git 自动部署
1. 在 Render Dashboard 连接 Git 仓库
2. Render 自动检测 `render.yaml` 并创建服务
3. 每次 push 到指定分支自动触发部署
### 通过 CLI 触发部署
```bash
# 安装 Render CLI
npm install -g render-cli
# 或 brew install render
# 登录(需要用户交互)
render login
# 触发部署
render services deploy <service-id-or-name>
# 查看部署状态
render services list-deploys <service-id-or-name>
```
### 通过 API 触发部署(备选)
如需直接调用 Render REST API,请在受信任的 CI 环境中使用官方 GitHub Action,详见下方 CI/CD 集成。
## CI/CD 集成
### GitHub Actions 触发部署
使用 Render 官方 GitHub Action 触发部署:
```yaml
name: Deploy to Render
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test
- name: Trigger Render Deploy
uses: renderinc/deploy-render-action@v1
with:
serviceId: ${{ secrets.RENDER_SERVICE_ID }}
apiKey: ${{ secrets.RENDER_API_KEY }}
```
**需要的 Secrets**:
- `RENDER_API_KEY`:Render API Key(Account Settings → API Keys)
- `RENDER_SERVICE_ID`:服务 ID(Dashboard 服务页面 URL 中 `srv-xxx`)
## 项目类型适配
| 项目类型 | env 类型 | buildCommand | startCommand |
| -------------- | -------- | --------------------------------- | ------------------ |
| Next.js (Node) | node | `npm ci && npm run build` | `npm start` |
| Vite 静态站点 | static | `npm ci && npm run build` | - |
| Express API | node | `npm ci` | `npm start` |
| Django | python | `pip install -r requirements.txt` | `gunicorn app:app` |
| FastAPI | python | `pip install -r requirements.txt` | `uvicorn main:app` |
| Gin (Go) | go | `go build -o server` | `./server` |
| Docker 应用 | docker | (Dockerfile) | (Dockerfile CMD) |
## 检查清单
- [ ] `render.yaml` 放在项目根目录
- [ ] 所有服务的 buildCommand 和 startCommand 正确
- [ ] 数据库已在 `databases` 中定义
- [ ] 环境变量已配置(敏感变量 `sync: false`)
- [ ] healthCheckPath 已配置(Web 服务)
- [ ] 静态站点配置了 SPA rewrite 路由(如需要)
- [ ] CI/CD 中 Render API Key 和 Service ID 已配置
- [ ] 部署日志无错误,服务状态为 "Live"
Wersje
W bazie nie ma innych skilli o nazwie devops/deploy-render.
Identyczna treść występuje jeszcze w 1 innych folderach na GitHubie. Tu pokazujemy jedną, najlepiej ocenioną kopię.
Migawka bazy z 28.10.2026 · wersja paczki 8a1d66306a8a (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 86devops/deploy-vercel
Wdraża aplikacje frontendowe i full-stack na Vercel przez CLI, np. Next.js, React, Vue lub strony statyczne. - 100render
Wdraża aplikacje webowe, API, strony statyczne, workery, zadania cron i Postgres na Render przez Blueprint render.yaml, w tym zmienne środowiskowe, auto-deploy z Gita, autoskalowanie i domeny. - 100render-deploy
Wdraża aplikacje na Render: analizuje kod, generuje Blueprinty render.yaml i podaje linki do Dashboardu. - 90devops/deploy-cloudflare
Wdraża strony Cloudflare Pages i funkcje Workers przez wrangler CLI, opisując metodykę krok po kroku. - 95render
Wdraża i obsługuje aplikacje na Render przez Blueprint i link do Dashboard: render.yaml, usługi web, static, workery, cron, Postgres i Key Value, zmienne środowiskowe i wdrożenia przez API. - 100render-web-services
Konfiguruje usługi webowe Render: wiązanie portów, TLS, health checki, domeny, auto-deploy i dyski trwałe.