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
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.
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_URLabove. 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:"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.