Files
sablier/docs/providers/docker.md
Yoann Lecuyer 0d699effc3 feat(docker): add docker pause strategy (#755)
* add tmp test

* add strategy config

* strategy config

* pause / unpause strategy impl

* Fix tests

* fix compilation

* add pause / unpause tests

* add doc

* add config test

* start if not paused

* remove test files
2025-11-27 12:03:37 -05:00

2.3 KiB

Docker

The Docker provider communicates with the docker.sock socket to start and stop containers on demand.

Use the Docker provider

In order to use the docker provider you can configure the provider.name property.

File (YAML)

provider:
  name: docker

CLI

sablier start --provider.name=docker

Environment Variable

PROVIDER_NAME=docker

!> Ensure that Sablier has access to the docker socket!

services:
  sablier:
    image: sablierapp/sablier:1.10.5
    command:
      - start
      - --provider.name=docker
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock'

Register containers

For Sablier to work, it needs to know which docker container to start and stop.

You have to register your containers by opting-in with labels.

services:
  whoami:
    image: acouvreur/whoami:v1.10.2
    labels:
      - sablier.enable=true
      - sablier.group=mygroup

Strategies

The Docker provider supports two strategies for managing containers:

Stop Strategy (default)

The stop strategy completely stops containers when they become idle and starts them again when needed.

File (YAML)

provider:
  docker:
    strategy: stop

CLI

sablier start --provider.docker.strategy=stop

Environment Variable

PROVIDER_DOCKER_STRATEGY=stop

Pause Strategy

The pause strategy pauses containers instead of stopping them. This is faster than stop/start as the container state remains in memory, but uses more system resources.

File (YAML)

provider:
  docker:
    strategy: pause

CLI

sablier start --provider.docker.strategy=pause

Environment Variable

PROVIDER_DOCKER_STRATEGY=pause

How does Sablier knows when a container is ready?

If the container defines a Healthcheck, then it will check for healthiness before stating the ready status.

If the containers do not define a Healthcheck, then as soon as the container has the status started