sail package installed in the same Python
environment as Harbor.
Setup
SetSAIL_API_KEY (or run sail auth login once) in the process that runs
Harbor. Each environment’s Sailbox is created in your organization’s
harbor app, the group that holds related
Sailboxes, which is created on first use; set SAIL_APP to use a different
app.
Task images
A task that declares a prebuiltdocker_image runs on that image, pulled
from its registry. Docker-style short references work: python:3.11 means
docker.io/library/python:3.11. The registry must be one the image API
supports (docker.io, ghcr.io, public.ecr.aws, or quay.io), and the
image must be Debian or Ubuntu based; see
registry images for the full
requirements.
A task that ships a Dockerfile instead has it built into a Sailbox image.
The first run of such a task in your organization waits for the build; see
Build from a Dockerfile for
what Dockerfiles can contain.
A task that ships an environment/docker-compose.yaml runs as a Docker
Compose project, and the Sailbox provides the Docker host: the services’
images are pulled or built inside it, commands run in the task’s main
service, and Harbor’s per-service operations (exec, download, stop) reach
the other services. Stopping such an environment without deleting it puts
the whole project to sleep with the Sailbox, and the next start resumes
it intact.
Lifecycle
Starting an environment creates its Sailbox and waits until it is running, which can take a few minutes when the image still has to build or the Sailbox queues for capacity. Stopping an environment puts its Sailbox to sleep: billing stops, its filesystem and running processes are kept, and starting the same environment again in the same run resumes it. When Harbor deletes an environment, its Sailbox is terminated permanently.Limits
A task’s CPU, memory, and storage requests select a Sailbox size; a task requesting more than 8 CPUs fails up front, since no Sailbox provides more. Sailboxes do not provide GPUs, TPUs, or Windows containers, and they do not enforce a task’s restrictive network policies (the no-network mode, or an egress allowlist); a task with the default public networking is unaffected. A task that asks for one of these fails up front with a clear error instead of running without it. Outside Compose mode, host mount specs are accepted and unused, the same as Harbor’s other cloud providers; a Compose task’s mounts are bound into itsmain service.