ackee
Docs/Ackee Script

job

A container that runs to completion each time it is started.

A container that runs to completion each time it is started, and is not restarted when it exits cleanly — a migration, a report, a backfill. Start it by hand, or connect a schedule to it with connect traffic.

ackee.ack
ackee 1
​
project "shop" {
cloud = "gcp"
region = "us-east1"
gcpProject = "acme-shop"
}
​
job "migrate" {
image = var.MIGRATE_IMAGE
size = "small"
}
​
database "main" {}
​
connect env "migrate" -> "main"

Fields

FieldTakesMeaning
imagerequiredstring | var.NAMEThe container image to run.
size"small" | "medium" | "large"
default "small"
CPU and memory per copy, on the same ladder as service. Must be written out, not referenced.
commandlist of stringsThe command to run in place of the image's default one; the image's entrypoint still runs first, as with docker run image node mailer.js. Leave it out to run the image as built.
envmapEnvironment variables, as for service.
buildmapBuild and redeploy from a repository on every push — see source.

Any other field is refused (AK204), and the error names the exact type to declare with node for the setting you wanted.

What it becomes

CloudBecomes
AWSAn ECS task definition on Fargate, run on demand.
Google CloudA Cloud Run job.
AzureA Container Apps job.

Joins the shared network net: all three clouds.

Notes

  • Timeouts and retries are spelled differently on each cloud, so they are not portable: declare the job with node and its cloud's type to set them.
  • Schedules are not portable either — EventBridge, Cloud Scheduler and Azure each express time differently. Declare your cloud's schedule with node and connect it to the job with connect traffic.