Before you start
- A Raff account and a project to create the app in.
- A public image on Docker Hub, GitHub Packages or another registry, for example
nginx:1.27-alpineorghcr.io/you/app:latest. - The port the image listens on, for a website, API or private service.
Steps
1
Open the create page
Go to Apps and click New service. On the Deploy an app page, choose Docker image.
2
Enter the image
Type the image in Image, for example 
nginx:1.27-alpine, and click Continue.
3
Name it and say what it is
Under App, set the Name and pick What it is: Website or API, Background worker, Private service, Scheduled task or Runs once. See App types.For a website, API or private service, set Port to the port the image listens on. It starts at 8080;
nginx listens on 80.4
Pick a size
Under Size, pick the CPU and memory for each instance, from 0.25 vCPU · 512 MB (119.99 a month). You can change it any time.
5
Add a database and settings (optional)
- Database: keep No database, or create Postgres with the app. See Add a Postgres database to an app.
- Environment variables: paste a
.envfile, oneKEY=valueper line. - Start command: leave it empty to use the image’s own command, or type one to replace it.
6
Deploy
Check the Summary and click Deploy. On a monthly account you pay at checkout first.
Verify
The app page shows Got the image, Starting and Live. There is no build step. Raff marks the app Live once it answers on its port. If the deploy fails, the app page says why, for example that Raff cannot pull the image or that the app does not accept connections on its port. For a wrong port, fix HTTP port in Settings > Runtime and the app deploys again.Run a new version of the image
Redeploy runs the exact image that is live now. It does not pull a newer image, even for a tag such aslatest. To run a new version, deploy it by its tag with the API or the CLI below.
Use the API
Create the app and deploy it at once. Setbuilder to image and deploy_now to true:
tier_id is the size: 1 is 0.25 vCPU · 512 MB, 2 is 0.5 vCPU · 1 GB, up to 6. List them with List Apps tiers. The response has the new app with its service_id, which the other calls use. See Create app service.
Deploy a new version of the image:
Use the CLI
Next steps
Set environment variables
Add settings and secrets.
Add a custom domain
Serve the app on your own domain.