Move from DigitalOcean App Platform to Eurobase
This guide moves a DigitalOcean App Platform service to Eurobase: the app spec, environment variables, port, database and domain. Eurobase runs the service as a container that scales to zero.
What moves where
| On App Platform | On Eurobase |
|---|---|
A services component from GitHub | Project from the same repository |
Buildpacks or dockerfile_path | Paketo buildpacks; Dockerfiles aren’t used |
run_command | The start command |
http_port and health_check.http_path | The port and the health path |
envs | Secrets |
| Managed Databases | Keep them, or move to an EU provider |
workers and jobs | Not available |
static_sites | Static site or plain HTML; see Deploy a static site |
Step 1: Export your app spec
With doctl, find the app ID and save its spec:
doctl apps list
doctl apps spec get <app-id> > app-spec.yamlThe spec lists each component's commands, port and envs. Values you marked to encrypt are stored encrypted, so copy those from your own records. Replace bindable values such as ${db.DATABASE_URL} with the connection string itself. Keep the file out of Git.
Step 2: Create the project
- Push your code to GitHub if it isn't there yet: Eurobase deploys from a GitHub repository.
- Create an account, connect GitHub and install the Eurobase GitHub App on the repository.
- In Projects, select New project, choose the repository and the service's root directory, then check the detected start command.
- Set Port and Health path as described in step 3, then select Save and Deploy.
Eurobase builds Node.js, Python, Go, Java, Ruby, PHP and .NET apps; apps in other languages can't be built. A single web: line in a Procfile becomes the start command. Node.js apps need npm or Yarn 1: pnpm and Bun projects are refused before the build.
Next.js, Astro, SvelteKit, Nuxt and TanStack Start apps run on V8 isolates instead of a container, with no port to set. For those, follow Move from Vercel from step 3.
Step 3: Check the port and health path
App Platform sends traffic to http_port, 8080 by default.
On Eurobase, set Port to the port your app listens on (3000 unless you change it); the same value is in PORT. Listen on 0.0.0.0. A deployment goes live only after your health path answers GET with 2xx or 3xx; otherwise the previous deployment keeps serving.
Step 4: Add your secrets
In the Eurobase project, open Secrets, add each value and choose the resources that receive it. Every value is stored encrypted. Secrets reach your code when it runs, not during the build, so values your build needs must come from your repository.
A secret reaches your app with its next deployment, so redeploy once your secrets are in place.
Step 5: Your database
Eurobase doesn't offer a managed database yet. Your container can keep using your current database, Redis or Valkey with its native driver, through its public address. For a Managed Database, use its public connection string, not the private VPC one.
To move the data to Europe, dump and restore it into an EU provider, such as Supabase in an EU region, with your app in maintenance mode during the copy. Then update the connection string in Secrets and redeploy.
Step 6: Move your domain
- Before the move, lower the TTL of your domain's DNS records so the switch spreads quickly.
- In Eurobase, open Domains in the sidebar, select Connect domain, enter your domain and choose the project. Only the workspace owner can connect domains.
- Add the DNS records Eurobase shows at your DNS provider, then wait until Eurobase marks the domain ready.
- Once your domain serves the Eurobase app, remove it from the old platform.
What doesn’t carry over
workersand scheduledjobs: Eurobase runs one web service per project and has no scheduled jobs yet.PRE_DEPLOYandPOST_DEPLOYjobs, such as database migrations: run them yourself before and after you push.- Persistent disks: containers scale to zero when idle, so keep files in a database or in your project's Storage, not on the container's disk.
- Private networking: your app reaches other services over their public addresses.
- Preview deployments: a project deploys one branch.
- Instance counts and sizes: your plan sets them, and the first request after an idle period waits for your app to start. See Plans and limits.
After the move
- Every push to the project's branch deploys; roll back from Deployment history.
- Container details: Containers and static sites.
- Stuck? Write to support@eurobase.dev.