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:
- 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. - Swap your local connection URL for your production connection URL
//delete-next-line
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/my_local_database"
//add-next-line
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/my_production_database"
- 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.