Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
63506c7
Add docs and changelog for containers snapshots
gpanders Mar 26, 2026
dd5c049
[Containers] Document Durable Object scheduling policy
thomasgauvin Sep 18, 2026
aa34d08
[Containers] Fix scheduling policy card icon
thomasgauvin Sep 21, 2026
8b5d150
[Containers] Use Durable Object Container API name
thomasgauvin Sep 21, 2026
1846040
[Containers] Mark snapshots as public beta
thomasgauvin Sep 21, 2026
2a7e652
[Containers] Clarify snapshot immutability
thomasgauvin Sep 21, 2026
9023441
[Containers] Refine scheduling policy changelog
thomasgauvin Sep 21, 2026
ad1cff2
Publish Containers changelogs on September 30
thomasgauvin Sep 21, 2026
03b773b
[Containers] Expand scheduling policy image guidance
thomasgauvin Sep 21, 2026
eb544d0
[Containers] Clarify external registry support
thomasgauvin Sep 21, 2026
7e65c31
Clarify scheduling policy field compatibility
thomasgauvin Sep 21, 2026
a83bf02
Document Container field policy compatibility
thomasgauvin Sep 23, 2026
810c483
Split Container fields by scheduling policy
thomasgauvin Sep 23, 2026
ad09a49
Clarify snapshot image compatibility
thomasgauvin Sep 23, 2026
e5c0b2c
Use standard snapshot compatibility terminology
thomasgauvin Sep 23, 2026
a524175
Document Cloudflare managed Container image
thomasgauvin Sep 23, 2026
4436a55
Scope managed Container image to Durable Objects
thomasgauvin Sep 23, 2026
7a1bd29
Document scheduling policy migration
thomasgauvin Sep 25, 2026
eaede2d
Rename scheduling policy migration guide
thomasgauvin Sep 25, 2026
859cbef
Clarify snapshot scheduling policy requirement
thomasgauvin Sep 25, 2026
f917823
Update src/content/docs/workers/wrangler/configuration.mdx
thomasgauvin Sep 29, 2026
53ed8ef
Update src/content/docs/containers/configuration/scheduling-policy/mo…
thomasgauvin Sep 29, 2026
c1f64b6
Update src/content/docs/containers/guides/image-management.mdx
thomasgauvin Sep 29, 2026
7bdd9bf
Update src/content/docs/containers/guides/image-management.mdx
thomasgauvin Sep 29, 2026
5528c94
Update src/content/changelog/containers/2026-09-30-durable-object-sch…
thomasgauvin Sep 29, 2026
f6ded93
Update src/content/docs/containers/configuration/scheduling-policy/in…
thomasgauvin Sep 29, 2026
9322266
Update src/content/changelog/containers/2026-09-30-snapshots.mdx
thomasgauvin Sep 29, 2026
2e0229a
Update src/content/docs/containers/guides/snapshots.mdx
thomasgauvin Sep 29, 2026
52451fc
Update src/content/docs/workers/wrangler/configuration.mdx
thomasgauvin Sep 29, 2026
5e49007
Resolve rebase against production
thomasgauvin Sep 29, 2026
918d444
[Containers] Schedule changelog announcements
thomasgauvin Sep 29, 2026
8b636f0
[Containers] Restore future changelog publication
thomasgauvin Sep 29, 2026
9a38c8c
[Containers] Clarify snapshot changelog title
thomasgauvin Sep 29, 2026
04e5be4
[Containers] Schedule changelog announcements
thomasgauvin Sep 29, 2026
da8447d
[Containers] Clarify snapshot scheduling policy
thomasgauvin Sep 29, 2026
9ac2f44
[Containers] Clarify snapshot policy requirement
thomasgauvin Sep 29, 2026
21d5f29
[Containers] Highlight managed Debian image
thomasgauvin Sep 29, 2026
11e469d
[Containers] Reposition snapshot policy note
thomasgauvin Sep 29, 2026
0dcf4b6
[Containers] Use prose for snapshot policy
thomasgauvin Sep 29, 2026
4f9e5af
[Containers] Combine snapshot changelog example
thomasgauvin Sep 29, 2026
60f410e
[Containers] Clarify new managed image
thomasgauvin Sep 29, 2026
be74711
[Containers] Simplify images attribute example
thomasgauvin Sep 29, 2026
391a4de
[Containers] Label policy-specific images attribute
thomasgauvin Sep 29, 2026
b47443c
[Containers] Clarify scheduling policy API support
thomasgauvin Sep 29, 2026
8c5e873
[Containers] Label snapshot restore parameter
thomasgauvin Sep 29, 2026
35071dc
[Containers] Reorder Container class guidance
thomasgauvin Sep 29, 2026
3db7b79
[Containers] Separate Container class setup
thomasgauvin Sep 29, 2026
0490c98
[Containers] Introduce Container class setup
thomasgauvin Sep 29, 2026
926cce6
[Containers] Link images attribute to Wrangler configuration
thomasgauvin Sep 29, 2026
ca9b266
[Containers] Distinguish start options by policy
thomasgauvin Sep 29, 2026
6d85d0c
[Containers] Document ContainerInfo and start labels
thomasgauvin Sep 29, 2026
0557d4e
[Containers] Combine start policy examples
thomasgauvin Sep 29, 2026
9d80681
[Containers] Define ContainerSnapshot return value
thomasgauvin Sep 29, 2026
d57f6d8
[Containers] Simplify inspect example
thomasgauvin Sep 29, 2026
9a8b649
[Containers] Simplify snapshot API example
thomasgauvin Sep 29, 2026
fa263ca
[Containers] Note default start instance size
thomasgauvin Sep 29, 2026
98c7d04
[Containers] Clarify application-controlled image updates
thomasgauvin Sep 29, 2026
0cce886
[Containers] Move scheduling policy migration to guides
thomasgauvin Sep 29, 2026
b169147
[Containers] Link scheduling policy rollouts
thomasgauvin Sep 29, 2026
e25ebfd
[Containers] Reorder migration guides after snapshots
thomasgauvin Sep 29, 2026
a40f87d
[Containers] Make scheduling policy docs timeless
thomasgauvin Sep 29, 2026
34e6fd5
[Containers] Prefer declarative Durable Object exports
thomasgauvin Sep 29, 2026
b71070b
[Containers] Clarify when named images are built
thomasgauvin Sep 29, 2026
e16d440
[Containers] Identify named image Wrangler field
thomasgauvin Sep 29, 2026
b64e3cf
[Containers] Address review feedback on scheduling policy docs (#33824)
thomasgauvin Sep 30, 2026
cee86a6
[Containers] Label Durable Object policy beta
thomasgauvin Sep 30, 2026
77a34e8
[Wrangler] Review fixes for Containers scheduling policy config refer…
thomasgauvin Sep 30, 2026
921e4e4
[Containers] Image management review fixes for #33531 (#33828)
thomasgauvin Sep 30, 2026
54f1bfa
[Containers] Fix DO Container API examples and inspect() image docs (…
thomasgauvin Sep 30, 2026
db5cfb2
[Containers] Review fixes for scheduling policy migration guide (#33827)
thomasgauvin Sep 30, 2026
33f4f33
[Containers] Clarify when inspect() reports an empty image (#33830)
thomasgauvin Sep 30, 2026
cc4f9e1
[Containers] Document snapshot limits
thomasgauvin Sep 30, 2026
1a126cc
[Containers] Restore flat scheduling policy path
thomasgauvin Sep 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
title: New scheduling policy for Containers to configure image and instance from Durable Objects
description: The durable_object scheduling policy gives each Durable Object control of Container configuration.
products:
- containers
date: "2026-09-30T08:45:00-04:00"
publish_future_dated_entry: true
---

import { TypeScriptExample, WranglerConfig } from "~/components";
Comment thread
gabivlj marked this conversation as resolved.

[Containers](/containers/) now support the `durable_object` scheduling policy in public beta. This policy lets a Durable Object select the image and instance size for a Container at runtime instead of using one centrally managed configuration for the application.

To use custom images, configure the policy and one or more named images in Wrangler:

<WranglerConfig>

```jsonc
{
"containers": [
{
"class_name": "AgentComputer",
"scheduling_policy": "durable_object",
"images": {
"base": {
"dockerfile": "./container/Dockerfile",
},
},
},
],
}
```

</WranglerConfig>

Wrangler prepares each image and exposes its immutable reference through `ctx.container.images`. Supply that reference and an instance size when you start the Container:

<TypeScriptExample filename="src/index.ts">

```ts
this.ctx.container.start({
image: this.ctx.container.images.base,
Comment thread
thomasgauvin marked this conversation as resolved.
enableInternet: false,
instance: "standard-2",
});
```

</TypeScriptExample>

The `durable_object` policy also supports the new [`cloudflare/debian-trixie` Cloudflare-managed image](/containers/guides/image-management/#use-the-cloudflare-managed-image), which includes Node.js 24.20.0 on Debian Trixie slim. Start it directly without configuring a named image.

Durable Object-managed Container instances have independent lifecycles and do not participate in application-wide image rollouts.

For configuration, runtime sizing, snapshots, and update behavior, refer to [Scheduling Policies](/containers/configuration/scheduling-policy/).
47 changes: 47 additions & 0 deletions src/content/changelog/containers/2026-09-30-snapshots.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: Snapshot and restore Container filesystem
description: Persist point-in-time container filesystem with snapshot APIs in public beta.
products:
- containers
date: "2026-09-30T08:45:00-04:00"
publish_future_dated_entry: true
---

import { TypeScriptExample } from "~/components";

[Containers](/containers/) now support snapshot APIs in public beta for saving and restoring point-in-time filesystem state. Create a snapshot first, then pass it back to `start()` to restore files after container sleep, restart, or handoff to another Durable Object.

Use `snapshotContainer()` through the [Durable Object Container API](/containers/api/durable-object-container/) to capture the full container filesystem. Create a snapshot from a running Container, store its handle, and pass that handle to `start()` when you restore it later:

<TypeScriptExample filename="src/index.ts">

```ts
import { DurableObject } from "cloudflare:workers";

export class MyDurableObject extends DurableObject {
async saveSnapshot() {
// Create a snapshot from the running Container.
const containerSnapshot = await this.ctx.container.snapshotContainer({});

await this.ctx.storage.put("containerSnapshot", containerSnapshot);
}

async restoreSnapshot() {
// Restore the saved snapshot later.
const containerSnapshot =
await this.ctx.storage.get<ContainerSnapshot>("containerSnapshot");

if (!containerSnapshot) {
return;
}

this.ctx.container.start({ containerSnapshot, enableInternet: false });
}
}
```

</TypeScriptExample>

Snapshots are only supported for Container applications that use the [`durable_object` scheduling policy](/containers/configuration/scheduling-policy/#use-the-durable-object-scheduling-policy). Snapshots are immutable, so create a new snapshot to persist filesystem changes made after a restore.

For more information, refer to [Snapshots](/containers/guides/snapshots/) and the [Durable Object Container API](/containers/api/durable-object-container/).
10 changes: 9 additions & 1 deletion src/content/docs/containers/api/container-class.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,17 @@ import { PackageManagers, TypeScriptExample } from "~/components";

The [`Container` class](https://github.com/cloudflare/containers) from [`@cloudflare/containers`](https://www.npmjs.com/package/@cloudflare/containers) provides lifecycle helpers for container instances. For direct lifecycle control, use the [Durable Object Container API](/containers/api/durable-object-container/).

**`Container` extends [`DurableObject`](/durable-objects/api/base/).** The Durable Object manages routing, persistent state, and lifecycle hooks, while the container process runs your image inside a Linux VM. Because your subclass is a Durable Object, you have access to the full Durable Object API — including [`this.ctx.storage`](/durable-objects/api/sqlite-storage-api/) for persistent SQLite-backed storage and [`this.ctx.id`](/durable-objects/api/id/) for the unique instance identifier. Use Durable Object storage to persist state that should survive container restarts, such as configuration, user data, or task results.

:::note
The `Container` class does not support applications that use the [`durable_object` scheduling policy](/containers/configuration/scheduling-policy/#use-the-durable-object-scheduling-policy). It is available only with the `default` scheduling policy. For `durable_object` applications, use the [Durable Object Container API](/containers/api/durable-object-container/).
:::

To move an existing application to direct control, refer to [Migrate to the Durable Object Container API](/containers/guides/migrate-to-durable-object-container-api/).

**`Container` extends [`DurableObject`](/durable-objects/api/base/).** The Durable Object manages routing, persistent state, and lifecycle hooks, while the container process runs your image inside a Linux VM. Because your subclass is a Durable Object, you have access to the full Durable Object API — including [`this.ctx.storage`](/durable-objects/api/sqlite-storage-api/) for persistent SQLite-backed storage and [`this.ctx.id`](/durable-objects/api/id/) for the unique instance identifier. Use Durable Object storage to persist state that should survive container restarts, such as configuration, user data, or task results.
## Use the Container class

Start by installing the `@cloudflare/containers` package:

<PackageManagers pkg="@cloudflare/containers" />

Expand Down
85 changes: 81 additions & 4 deletions src/content/docs/containers/api/durable-object-container.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ products:
- durable-objects
---

import { TypeScriptExample } from "~/components";
import { Badge, TypeScriptExample } from "~/components";

Each [container](/containers/) is managed and proxied by a Durable Object. The Durable Object manages routing and persistent state. The container process runs your image inside a Linux VM.

Expand All @@ -35,7 +35,11 @@ export class MyDurableObject extends DurableObject<Env> {
throw new Error("No container is configured for this Durable Object");
}
if (!container.running) {
container.start();
// With the `default` scheduling policy, call `container.start()` without options.
container.start({
image: container.images.base,
enableInternet: false,
});
await this.ctx.storage.put("lastStartedAt", Date.now());
}
}
Expand All @@ -54,6 +58,16 @@ export class MyDurableObject extends DurableObject<Env> {

## Attributes

### `images` <Badge text="durable_object policy only" variant="note" size="small" />

`images` is a read-only map generated from the [`images` field in the application's Wrangler configuration](/workers/wrangler/configuration/#durable_object-scheduling-policy). Wrangler builds or resolves each named image and exposes its digest-pinned reference under the same key. This attribute is available only for applications that use the [`durable_object` scheduling policy](/containers/configuration/scheduling-policy/#use-the-durable-object-scheduling-policy).

```js
const image = this.ctx.container.images.base;
```

Pass a value from this map as the `image` option to [`start()`](#start).

### `running`

`running` is `true` when the container is running. It does not confirm that the container is ready to accept requests.
Expand All @@ -68,21 +82,55 @@ this.ctx.container.running;

`start()` boots a container. It returns before the container is ready to accept requests. Confirm readiness before sending traffic.

The required options depend on the application's scheduling policy.

```js
// `default` scheduling policy:
// The image and instance size come from Wrangler configuration.
this.ctx.container.start();

// `durable_object` scheduling policy:
// Pass an image and choose whether to allow outbound Internet access.
// The instance size is optional and defaults to "lite".
this.ctx.container.start({
image: this.ctx.container.images.base,
enableInternet: true,
});
```

#### Parameters

- `options` (`object`, optional): Common container startup options:
- `options` (`object`, conditionally required): Startup options. Required for applications that use the `durable_object` scheduling policy and optional for applications that use the `default` scheduling policy.
- `env` (`Record<string, string>`, optional): Environment variables to pass to the container.
- `entrypoint` (`string[]`, optional): Command and arguments to run in the container.
- `enableInternet` (`boolean`, required): Whether to allow outbound Internet access. Required when you pass `options`.
- `image` (`string`, conditionally required) <Badge text="durable_object policy only" variant="note" size="small" />: Image reference to start. Required unless you pass `containerSnapshot`. Pass the [`cloudflare/debian-trixie` managed image](/containers/guides/image-management/#use-the-cloudflare-managed-image) or a value from [`ctx.container.images`](#images).
- `instance` (`string | object`, optional) <Badge text="durable_object policy only" variant="note" size="small" />: Instance size. Pass `"lite"`, `"standard-1"`, `"standard-2"`, `"standard-3"`, `"standard-4"`, or a custom object with `vcpu`, `memoryMib`, and `diskMb` properties. Defaults to `"lite"`.
- `containerSnapshot` (`ContainerSnapshotRestoreParams`, optional) <Badge text="durable_object policy only" variant="note" size="small" />: Snapshot handle to restore before startup. Pass the `ContainerSnapshot` returned by [`snapshotContainer()`](#snapshotcontainer), or an object containing its `id`. You cannot pass both `containerSnapshot` and `image`.
- `labels` (`Record<string, string>`, optional): Up to 10 labels that [`inspect()`](#inspect) returns. Label names must contain 1 to 16 bytes. Label values can contain up to 64 bytes. Names and values cannot contain control characters.

#### Return values

- `void`: No return value.

### `inspect`

`inspect()` returns the image and labels for a running container. It returns `null` when no container is running.

```js
const containerInfo = await this.ctx.container.inspect();
```

#### Parameters

- None.

#### Return values

- `Promise<ContainerInfo | null>`: Resolves with `null` when no container is running. Otherwise, it resolves with a `ContainerInfo` object containing:
- `image` (`string`): Image reference passed to [`start()`](#start). The value is an empty string while the container is starting and for a container restored from `containerSnapshot`.
- `labels` (`Record<string, string>`): Labels passed to [`start()`](#start).

### `exec`

`exec()` starts another process inside an already-running container. It does not start a stopped container.
Expand Down Expand Up @@ -170,6 +218,30 @@ With `stderr: "combined"`, `stderr` is `null` on `ExecProcess` and an empty `Arr

For task-oriented examples, refer to [Execute commands](/containers/guides/execute-commands/).

### `snapshotContainer` <Badge text="durable_object policy only" variant="note" size="small" />

`snapshotContainer()` creates a point-in-time snapshot of the running container filesystem. This method is only supported for applications that use the [`durable_object` scheduling policy](/containers/configuration/scheduling-policy/#use-the-durable-object-scheduling-policy).

```js
const snapshot = await this.ctx.container.snapshotContainer({
name: "before-upgrade",
});
```

#### Parameters

- `options` (`ContainerSnapshotOptions`): Snapshot configuration:
- `name` (`string`, optional): Human-readable name for the snapshot.

#### Return values

- `Promise<ContainerSnapshot>`: Resolves with an opaque handle for the stored filesystem snapshot. The snapshot data is not returned to the Worker. The handle contains:
- `id` (`string`): Unique snapshot identifier. Pass the returned `ContainerSnapshot` to [`start()`](#start) as `containerSnapshot`, or store it for a later restore.
- `size` (`number`): Snapshot size in bytes.
- `name` (`string`, optional): Human-readable name supplied in `options`.

Container snapshots are immutable. Snapshot handles have an implicit 30-day time-to-live that refreshes when you restore them. For the complete save and restore flow, refer to [Use snapshots](/containers/guides/snapshots/).

### `destroy`

`destroy()` stops the container and can include an optional reason for the operation.
Expand Down Expand Up @@ -272,7 +344,11 @@ interface Env {}
class MyDurableObject extends DurableObject<Env> {
startAndMonitor() {
const container = this.ctx.container;
container.start();
// With the `default` scheduling policy, call `container.start()` without options.
container.start({
image: container.images.base,
enableInternet: false,
});
this.ctx.waitUntil(
container
.monitor()
Expand Down Expand Up @@ -374,3 +450,4 @@ await this.ctx.container.interceptOutboundHttps("*", worker);
- [Get started with Containers](/containers/get-started/): Deploy your first container.
- [SQLite storage API](/durable-objects/api/sqlite-storage-api/): Persist state across container restarts.
- [Durable Objects](/durable-objects/): The underlying platform that powers Containers.
- [Snapshots](/containers/guides/snapshots/): Save and restore container filesystems.
32 changes: 14 additions & 18 deletions src/content/docs/containers/concepts/architecture.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@ products:

## Deployment

After you deploy an application with a Container, your image is uploaded to
[Cloudflare's Registry](/containers/guides/image-management/) and distributed globally to Cloudflare's Network.
Cloudflare will pre-schedule instances and pre-fetch images across the globe to ensure quick start
times when scaling up the number of concurrent container instances.
How images and running Container instances update depends on the [scheduling policy](/containers/configuration/scheduling-policy/) for the application.

Worker code goes live on deploy. Container instances update with a [rollout](/containers/configuration/rollouts/). Refer to [Deploy Containers](/containers/guides/deploy/).
With the `durable_object` policy, Wrangler prepares the named images for the application. Durable Object code can access their immutable references and selects an image and instance size when it calls `ctx.container.start()`. When an image reference changes, the Durable Object code decides whether to stop the running Container and start it with the new image or let it continue with the previous image. This application-controlled restart is how you roll out image changes with the `durable_object` policy. These instances do not participate in application-wide image rollouts.

With the `default` policy, Wrangler uploads or resolves the application image. Cloudflare distributes that image across its network and prepares capacity for new instances. Changes to the image or instance type use a [rollout](/containers/configuration/rollouts/).

Worker code goes live on deploy before any application-wide Container rollout finishes. Refer to [Deploy Containers](/containers/guides/deploy/).

## Container instance lifecycle

Expand Down Expand Up @@ -70,8 +71,7 @@ developers to address and route to specific container instances, run code when a

### Starting a Container

When a Durable Object instance requests to start a new container instance, the **nearest location
with a pre-fetched image** is selected.
When a Durable Object requests a new Container instance, Cloudflare selects eligible capacity with the required image available. The `durable_object` policy uses the `image` and `instance` options supplied to `ctx.container.start()`. The `default` policy uses the application image and instance type from Wrangler configuration.

:::note
Durable Objects and their associated Container instances are not guaranteed to run in the
Expand All @@ -81,12 +81,7 @@ Container placement is optimized for request routing and startup speed, so a Con
start in a different location than its Durable Object.
:::

Starting additional container instances will use other locations with pre-fetched images,
and Cloudflare will automatically begin prepping additional machines behind the scenes
for additional scaling and quick cold starts. Because there are a finite number of pre-warmed
locations, some container instances may be started in locations that are farther away from
the end-user. This is done to ensure that the container instance starts quickly. You are
only charged for actively running instances and not for any unused pre-warmed images.
Starting additional Container instances can use other locations where the image is available. Cloudflare prepares additional capacity as demand grows. Because prepared capacity is finite, some Container instances may start in locations farther from the end user. You are only charged for actively running instances, not for prepared images that are not running.

#### Cold starts

Expand Down Expand Up @@ -145,13 +140,14 @@ The [`Container` class](/containers/api/container-class/) adds hooks that run Wo

Refer to the [status hooks example](/containers/examples/status-hooks/) for a full implementation.

#### Persistent disk
#### Use snapshots

All disk is ephemeral. When a Container instance goes to sleep, the next time
it is started, it will have a fresh disk as defined by its container image.
All disk is ephemeral by default. When a Container instance goes to sleep, the
next time it starts, it uses a fresh disk from the container image.

Snapshots are coming soon, which allow the user to quickly persist and restore the disk
from an entire container or a directory.
If you need point-in-time filesystem state, Container applications that use the [`durable_object` scheduling policy](/containers/configuration/scheduling-policy/#use-the-durable-object-scheduling-policy) can create and restore a snapshot.
Snapshots are immutable, so later file changes require a new snapshot. For more
information, refer to [Snapshots](/containers/guides/snapshots/).

You can also use [FUSE](/containers/examples/r2-fuse-mount/) to persist disk
to R2 or other object storage backends. Though you should not expect native
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/containers/configuration/index.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
pcx_content_type: navigation
title: Configuration
description: Configure Containers in Wrangler, connect them to Workers and bindings, set environment variables, tune scaling and routing, and manage rollouts.
description: Choose a scheduling policy, configure Containers in Wrangler, connect bindings, set environment variables, tune scaling, and manage rollouts.
sidebar:
order: 5
group:
Expand Down
14 changes: 9 additions & 5 deletions src/content/docs/containers/configuration/rollouts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ products:

import { WranglerConfig, PackageManagers } from "~/components";

:::note
Rollouts apply to Container applications that use the [`default` scheduling policy](/containers/configuration/scheduling-policy/). Durable Object-managed Container instances do not participate in application-wide rollouts; application code selects their image when it calls `ctx.container.start()`.
:::

## How rollouts work

A **rollout** applies a target container application configuration after you [deploy](/containers/guides/deploy/) a Worker that uses Containers. The target can change the image, instance type, limits, placement, or other container settings.
Expand Down Expand Up @@ -144,12 +148,12 @@ Use none when the deploy should not publish a new image or start a container ins
},
],
},
"migrations": [
{
"tag": "v1",
"new_sqlite_classes": ["MyContainer"],
"exports": {
"MyContainer": {
"type": "durable-object",
"storage": "sqlite",
},
],
},
}
```

Expand Down
Loading
Loading