Skip to main content
Every schema change ships as a forward Prisma migration. There are no down migrations, so a rollback means restoring a database archive taken before the upgrade, not reversing one. That single rule shapes the whole page. Take the backup first, because after the migration runs it is the only way back.

Before you upgrade

1

Record what you are on

Note the Compose project name as well. It defaults to the repository directory name, and volumes are prefixed with it, such as production_pgdata. Keep it stable across upgrades.
2

Take a verified backup

A backup is not proven until it restores. Create the archive and confirm PostgreSQL can read its table of contents before you continue. See Back up PostgreSQL.

Upgrade

The API applies every pending migration on boot, so --wait returning success means the schema is current and both services are healthy. When you run pinned images instead of building from source, recreate the containers on the new tag with the docker run sequence from Run a published release. The checked in docker-compose.yml builds both applications from source and declares no image, so docker compose pull cannot move it onto a published tag. A supported pull based Compose file arrives with 1.0.0.

Verify the upgrade

Then check representative row counts against what you expect.

Roll back

A migration can make older application code incompatible with the migrated schema. Restoring only the previous image is therefore not a rollback. Restore both.
1

Stop the applications

2

Restore the pre upgrade archive

Drop and recreate the database, then restore the archive you took before the upgrade. See Restore PostgreSQL.
3

Start the previous revision

Check out the previous code revision, or set the previous pinned image tag, then bring the stack back up and verify both health URLs.

What does 1.0.0 promise?

1.0.0 promises compatibility for three surfaces throughout the 1.x line. Breaking any of them requires 2.0.0. Until 1.0.0 is tagged, feature work is frozen and the 0.5.x line carries fixes, tests, measured performance work, behaviour preserving refactors, documentation, packaging, continuous integration and maintenance. Release Please owns tags, versions and CHANGELOG.md. Read the release notes before every upgrade, because an operator facing change appears in a commit subject or a breaking change footer.
Last modified on July 31, 2026