要按计划启动容器,您可以使用 Workers Cron 触发器。
有关完整示例,请参阅 定时容器模板 ↗。
在您的 Wrangler 配置中使用 cron 表达式指定计划:
{ "name": "cron-container", "main": "src/index.ts", "triggers": { "crons": [ "*/2 * * * *" // 每 2 分钟运行一次 ] }, "containers": [ { "class_name": "CronContainer", "image": "./Dockerfile" } ], "durable_objects": { "bindings": [ { "class_name": "CronContainer", "name": "CRON_CONTAINER" } ] }, "migrations": [ { "new_sqlite_classes": ["CronContainer"], "tag": "v1" } ]}
name = "cron-container"main = "src/index.ts"
[triggers]crons = [ "*/2 * * * *" ]
[[containers]]class_name = "CronContainer"image = "./Dockerfile"
[[durable_objects.bindings]]class_name = "CronContainer"name = "CRON_CONTAINER"
[[migrations]]new_sqlite_classes = [ "CronContainer" ]tag = "v1"
然后在您的 Worker 中,从 "scheduled" 处理程序调用您的容器:
import { Container, getContainer } from "@cloudflare/containers";
export class CronContainer extends Container { sleepAfter = "5m"; manualStart = true;}
export default { async fetch(): Promise<Response> { return new Response("此 Worker 运行 cron 作业以按计划执行容器。"); },
async scheduled( _controller: any, env: { CRON_CONTAINER: DurableObjectNamespace<CronContainer> }, ) { await getContainer(env.CRON_CONTAINER).startContainer({ envVars: { MESSAGE: "开始时间: " + new Date().toISOString(), }, }); },};
- @2025 Cloudflare Ubitools
- Cf Repo