Deploy a container image

Run a public container image you already build on Plexivo App Runner, with its own HTTPS address, health checks and autoscaling.

If you already build images in your own CI, give Plexivo App Runner the image reference. Plexivo copies the image into its own registry, byte for byte, signs it and runs it. Nothing is rebuilt.

What the image needs#

  • A public image in any registry that serves it without signing in, such as GitHub Container Registry or Docker Hub.
  • A full reference with the registry, a tag or a digest: ghcr.io/acme/api:1.4.2 or docker.io/library/nginx:1.27-alpine. Pin a digest (@sha256:…) to run exactly one build.
  • Built for linux/amd64. A multi-platform image works: Plexivo takes its linux/amd64 image.
  • Up to 10 GiB, compressed.

Deploy it#

  1. Start a new app. Choose Create, then Plexivo App Runner.
  2. Choose the image. Under Source, pick Container image and enter the Image.
  3. Name it, size it and deploy. As for any app: see Scaling and sizes.

With the API, send "source": {"type": "image", "image": "ghcr.io/acme/api:1.4.2"} in the create request shown in Deploy from Git.

Port#

Plexivo sends traffic to the port your image declares with EXPOSE. If it exposes 8080, that port wins; otherwise the lowest one exposed. An image that exposes nothing gets 8080. Plexivo also sets PORT to that number, so an app that reads PORT always listens in the right place.

How it runs#

  • Without privilege escalation, and with every Linux capability dropped except binding to a low port. An image that starts as root keeps only what it needs to switch to its own user.
  • With your organisation’s time zone as TZ (India Standard Time for India), unless you set TZ yourself.
  • With up to 60 seconds to finish its work when an instance is replaced or scaled in: Plexivo stops sending it traffic, waits 5 seconds, then sends the stop signal.

Deploy a new version#

On the app’s Settings tab, the Image card shows what the app runs.

  • Enter a new reference and choose Deploy this image.
  • Or choose Deploy again to copy the same reference again. A tag you have moved, such as latest, is picked up.

If the copy fails, the current version keeps serving. Follow the copy on the Deployments tab.

bash
curl -s -X POST $API/deployments/$APP/redeploy \
  -H "Authorization: Bearer $PLEXIVO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"image": "ghcr.io/acme/api:1.4.3"}'

Leave out the body to deploy the current reference again. See Releases and rollback.

For developers Call the redeploy endpoint from the last step of your CI pipeline, with the tag or digest your pipeline pushed, and use a key limited to the permissions it needs.

Next steps#

Updated 27 October 2026