Skip to main content
Updated October 19, 2026 Paste a docker-compose.yml and Raff makes one app for each service that runs an image. You review the list, untick what you do not want, and deploy them in one click. Each service becomes its own app, with its own address, size, logs and deploys.

Before you start

  • A Raff account and a project to create the apps in.
  • A compose file whose services run public images (image:). Services that build from a folder (build:) are listed but not deployed: deploy those from GitHub.

How Raff reads the file

Raff goes through the services by name, A to Z: For example, this file:
docker-compose.yml
becomes three apps: app, a website on port 8080 with SEARCH_URL set; search, a private service on port 7700; and worker, a background worker that runs node worker.js.

Steps

1

Open the create page

Go to Apps and click New service. On the Deploy an app page, choose Docker Compose.
2

Add the file

Paste the file into docker-compose.yml, or click Choose a file to pick it from your computer. Click Read the file.
3

Review the services

Services lists one row per service: its name, what it becomes, its image and its port. Notes in amber say what Raff cannot carry over, for example an env_file.Untick any service you do not want. To make a different choice for one service, untick it here and deploy its image on its own from Docker image.
TODO: Services list after reading a compose file, with checkboxes
4

Deploy

Click Deploy 3 apps (the button counts the services you ticked). Each app starts at 1 vCPU · 2 GB; change the size on its app page.

Verify

Each row gets a check mark when its app is created. When all are created, Raff opens the Apps list, where each app deploys on its own and turns Live. If one cannot be created, its row says why and you stay on the page. The others are still created.

After the import

  • Point apps at each other. A private service’s address is on its Connect tab, under Private network. Put that address in the variables of the apps that call it, for example SEARCH_URL above. See Set app environment variables.
  • Move databases to Raff Postgres. A database container from the file, such as postgres, keeps its data inside the app, so the data is lost when it restarts or redeploys. Use a Raff Postgres database instead and link it to the apps. See Add a Postgres database to an app.

Use the API

Reading a compose file is a dashboard step. With the API, create one app per service, the same way the import does:
Use "service_type": "web" or "private" with http_port for services with a port. A private service needs its port. Then set each app’s variables with Bulk set environment variables.

Next steps

Set environment variables

Add what env_file held.

App types

Websites, private services and workers.
Last modified on October 19, 2026