[ PROMPT_NODE_24280 ]
Sandbox 配置说明
[ SKILL_DOCUMENTATION ]
# 配置
## getSandbox 选项
typescript
const sandbox = getSandbox(env.Sandbox, 'sandbox-id', {
normalizeId: true, // 小写 ID(预览 URL 所需)
sleepAfter: '10m', // 不活动后休眠: '5m', '1h', '2d' (默认: '10m')
keepAlive: false, // false = 自动超时, true = 永不休眠
containerTimeouts: {
instanceGetTimeoutMS: 30000, // 预配超时 30s (默认: 30000)
portReadyTimeoutMS: 90000 // 容器启动超时 90s (默认: 90000)
}
});
**休眠配置**:
- `sleepAfter`: 时长字符串 (例如 '5m', '10m', '1h') - 默认: '10m'
- `keepAlive: false`: 自动休眠 (默认,成本优化)
- `keepAlive: true`: 永不休眠 (成本较高,需要显式调用 `destroy()`)
- 休眠的沙箱会自动唤醒 (冷启动)
## 实例类型
wrangler.jsonc 中的 `instance_type`:
- `lite`: 256MB RAM, 0.5 vCPU (默认)
- `standard`: 512MB RAM, 1 vCPU
- `heavy`: 1GB RAM, 2 vCPU
## Dockerfile 模式
**基础**:
dockerfile
FROM docker.io/cloudflare/sandbox:latest
RUN pip3 install --no-cache-dir pandas numpy
EXPOSE 8080 # wrangler dev 所需
**科学计算**:
dockerfile
FROM docker.io/cloudflare/sandbox:latest
RUN pip3 install --no-cache-dir
jupyter-server ipykernel matplotlib
pandas seaborn plotly scipy scikit-learn
**Node.js**:
dockerfile
FROM docker.io/cloudflare/sandbox:latest
RUN npm install -g typescript ts-node
**关键**: `EXPOSE` 是 `wrangler dev` 端口访问所必需的。生产环境会自动暴露所有端口。
## CLI 命令
bash
# 开发
wrangler dev # 启动本地开发服务器
wrangler deploy # 部署到生产环境
wrangler tail # 监控日志
wrangler containers list # 检查容器状态
wrangler secret put KEY # 设置密钥
## 环境与密钥
**wrangler.jsonc**:
c
{
"vars": {
"ENVIRONMENT": "production",
"API_URL": "https://api.example.com"
},
"r2_buckets": [{
"binding": "DATA_BUCKET",
"bucket_name": "my-data-bucket"
}]
}
**使用**:
typescript
const token = env.GITHUB_TOKEN; // 来自 wrangler secret
await sandbox.exec('git clone ...', {
env: { GIT_TOKEN: token }
});
## 预览 URL 设置
**先决条件**:
- 带有通配符 DNS 的自定义域名: `*.yourdomain.com → worker.yourdomain.com`
- 不支持 `.workers.dev` 域名
- 在 getSandbox 中设置 `normalizeId: true`
- 在 fetch 中首先调用 `proxyToSandbox()`