Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

Fly.io (/docs/guides/postgres/flyio)

For the complete Prisma documentation index, see llms.txt. A markdown version of any docs page is available by appending .md to its URL.

Learn how to deploy applications using Prisma Postgres to Fly.io

Location: Guides > Postgres > Fly.io

[!NOTE] This guide uses Prisma ORM 7

The commands and code on this page target Prisma ORM 7, which remains fully supported. To start a new Prisma ORM 8 project, see the Prisma ORM 8 quickstart; to add Prisma ORM 8 to an existing app, see Add to an existing project. A Prisma ORM 8 version of this guide is planned.

Fly.io is a cloud application platform that lets you deploy full-stack applications globally. This guide shows you how to deploy a Node.js application using Prisma Postgres to Fly.io.

Ensure your package.json includes a postinstall script to generate Prisma Client during deployment:

package.json
{  // ...  "scripts": {    // ...    "postinstall": "prisma generate"  }}

From your project directory, run:

Bash
fly launch

Follow the prompts to configure your application. Fly.io will auto-detect your Node.js application and create the necessary configuration.

Add your Prisma Postgres DATABASE_URL as a secret in Fly.io:

Bash
fly secrets set DATABASE_URL="your-prisma-postgres-connection-string"

[!NOTE] You can find your DATABASE_URL in your .env file or in the Prisma Console.

If not already deployed during fly launch, deploy your application:

Bash
fly deploy

Once the deployment completes, you'll see a success message with your app's URL:

🎉  SUCCESS! Your app is live and ready to use!  🎉

Visit: https://your-app-name.fly.dev/

[!NOTE] In the Fly.io dashboard, your app's status may show as "Pending" initially. It typically transitions to "Deployed" within a few minutes.

Ensure your project uses the correct environment variable

Section titled “Ensure your project uses the correct environment variable”

Ensure that the data source in your prisma.config.ts file is configured to use the DATABASE_URL environment variable:

prisma.config.ts
import "dotenv/config";
import { defineConfig, env } from "prisma/config";

export default defineConfig({
  datasource: {
    url: env("DATABASE_URL"),
  },
  schema: "prisma/schema.prisma",
});

To run migrations on your deployed Fly.io app, you can use:

Bash
fly ssh console -C "npx prisma migrate deploy"

Or add a release command to your fly.toml:

fly.toml
[deploy]
  release_command = "npx prisma migrate deploy"

Fly.io lets you scale and place your application in multiple regions. To reduce latency, deploy your app in a region close to your Prisma Postgres database region.

Bash
fly scale count 2 --region iad

Prisma schema not found or Client not generated correctly

Section titled “Prisma schema not found or Client not generated correctly”

If you're using a custom Dockerfile and your build fails because the Prisma Client cannot be found, it's likely due to one of two reasons:

  1. Order of operations: npm install (which runs postinstall) runs before the schema is copied.
  2. Incorrect copy path: The schema is copied to the root instead of the prisma folder.

Solution: In your Dockerfile, copy the prisma/ directory to ./prisma before running npm install:

Docker
# ❌ Wrong order or path
COPY package*.json ./
COPY prisma .                   # Copies contents to root (wrong structure)
RUN npm install                 # postinstall runs but might fail or generate in wrong place

# ✅ Correct order and path
COPY package*.json ./
COPY prisma ./prisma            # Copies to ./prisma folder (preserves structure)
RUN npm install                 # postinstall finds schema in expected location
COPY . .
  • Firebase Studio: Learn how to use Prisma Postgres in the online Firebase Studio
  • Netlify: Learn how to create Prisma Postgres databases via the official Netlify extension and deploy your applications with it
  • Vercel: Learn how to create Prisma Postgres databases via the Vercel Marketplace and deploy your Next.js, Nuxt, and SvelteKit applications.
  • Viewing data: Viewing and editing data in Prisma Postgres via Prisma Studio or other database GUIs
  • VS Code: The Prisma VS Code extension provides a management UI for Prisma Postgres and agent-mode support for GitHub Copilot
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu