Deploy migrations from a local environment

There are two scenarios where you might consider deploying migrations directly from a local environment to a production environment.

  • You have a local CI/CD pipeline
  • You are baselining a production environment

This page outlines some examples of how you can do that and why we would generally not recommend it.

Local CI/CD pipeline

If you do not have an automated CI/CD process, you can technically deploy new migrations from your local environment to production in the following ways:

  1. Make sure your migration history is up to date. You can do this through running prisma migrate dev, which will generate a migration history from the latest changes made.
  2. Swap your local connection URL for your production connection URL
.env
-DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/my_local_database"
2
+DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/my_production_database"
  1. Run prisma migrate deploy
We strongly discourage this solution due to the following reasons
  • You risk exposing your production database connection URL to version control.
  • You may accidentally use your production connection URL instead and in turn override or delete your production database.
We recommend setting up an automated CI/CD pipeline

The pipeline should handle deployment to staging and production environments, and use migrate deploy in a pipeline step. See the deployment guides for examples.

Baselining a production database

When you add Prisma Migrate to an existing database, you must baseline the production database. Baselining is performed once, and can be done from a local instance.

baseline production from local