Skip to Content
PyoDocs

Deploying a service

Deploy from Git, a container image or a template.

From Git

Connect a repository and Pyo builds it on one of your builders.

  • Zero config: with no Dockerfile or Containerfile, Pyo detects your framework and builds it.
  • Static sites: plain HTML or a built frontend, like Vite or Astro. See Static sites.
  • Dockerfile or Containerfile: if you have one, Pyo uses it. If you have both, it uses the Dockerfile. You can set the Dockerfile path, the build context and build arguments.

Deploy on every push

Connect GitHub, and each push to a service's branch deploys it. This works for private repositories too. You can turn it off per service.

From a container image

Run any image by name, such as ghcr.io/acme/api:1.2. For private images, save a registry login first.

From Docker Compose

Import a Compose file as a project, with a service for each Compose service. See Importing Docker Compose.

From a template

Pick a template and Pyo fills in the defaults. See Deploying a template.

From another platform

Bring your services over from Coolify or Dokploy, with their variables, domains and databases. See Importing from another platform.

Build machines

Git builds run on a builder. A builder runs on a server in your cluster or on a dedicated build server.

Cancel or retry

On the service's Deployments tab, you can cancel a running deployment or retry a failed one from its row.

Health checks

A health check tells Pyo when a new version is ready. It can be an HTTP path, a TCP port or a command. Traffic only moves to the new version once the check passes. With None, deploys don't wait for it to be ready.

For a service from Git, Pyo picks the check until you change it. A static site gets a check of /.

A service's addresses

A service's Overview shows where it can be reached:

  • Public: its servers' public addresses. Point a domain's DNS at one of these.
  • Tailscale: its servers' Tailscale addresses, for devices on your tailnet.
  • Internal: the name other services in the project use to reach it, like api:8080.

Choose +N to see them all, including the longer internal name for services in other projects.

On this page

Edit page