跳转到内容
搜索文档

推出

最后更新 查看 MarkdownAgent 设置

推出工作原理

当您运行 wrangler deploy 时,Worker 代码会立即更新,并且 Container 实例会使用滚动部署策略进行更新。默认推出配置分两步,第一步更新 10% 的实例,第二步更新剩余 90%。 可以使用 rollout_step_percentage 属性在 Wrangler 配置文件中进行配置。

在部署更改时,您还可以配置一个 rollout_active_grace_period,这是在推出期间活动容器实例有资格进行更新之前等待的最小秒数。 此时,将向容器发送 SIGTERM 信号,并且容器仍有 15 分钟的时间优雅地关闭。 如果该实例未在 15 分钟内停止,它将被发送 SIGKILL 信号强制停止。 如果在停止 Container 实例之前必须进行清理,您应该在这 15 分钟期间执行此操作。

一旦停止,该实例就会被运行已更新代码的新实例替换。当容器再次启动时,请求可能会挂起。

因为 Worker 代码会立即更新,而容器实例是逐步推出的,所以请保持更改在这两个版本中向后兼容,直到推出完成。

以下是一个示例配置,该配置设置了 5 分钟的宽限期和两步推出,其中第一步更新 10% 的实例,第二步更新 100% 的实例:

{
	"containers": [
		{
			"max_instances": 10,
			"class_name": "MyContainer",
			"image": "./Dockerfile",
			"rollout_active_grace_period": 300,
			"rollout_step_percentage": [10, 100],
		},
	],
	"durable_objects": {
		"bindings": [
			{
				"name": "MY_CONTAINER",
				"class_name": "MyContainer",
			},
		],
	},
	"migrations": [
		{
			"tag": "v1",
			"new_sqlite_classes": ["MyContainer"],
		},
	],
}
[[containers]]
max_instances = 10
class_name = "MyContainer"
image = "./Dockerfile"
rollout_active_grace_period = 300
rollout_step_percentage = [ 10, 100 ]

[[durable_objects.bindings]]
name = "MY_CONTAINER"
class_name = "MyContainer"

[[migrations]]
tag = "v1"
new_sqlite_classes = [ "MyContainer" ]

立即推出

如果您需要进行一次在单步中将部署推向 100% 容器实例的单次部署,则可以通过以下方式部署:

npx wrangler deploy --containers-rollout=immediate

请注意,rollout_active_grace_period(如果已配置)仍将适用。

这篇文档对您有帮助吗?