Reliable deployments: restarts, checks and a tested way back

Written by

A restart policy can bring a stopped process back. A reliable service also needs useful checks, recoverable data and someone who knows when to intervene.

Published on

Reliable deployments: restarts, checks and a tested way back

Updated

Define a working service

A running container does not prove that customers can use the application. I start with a short acceptance list: the public page loads, sign-in works, a form can be accepted and the required data is available. Checks should cover the path a visitor uses, not just an internal port.

This portfolio separates the web frontend, Rust API, database and file storage. A successful deployment must check their connection as well as whether each process started. The project source documents that separation; it is not evidence of uninterrupted uptime.

Understand what a restart can do

Docker restart policies respond to a container stopping. They do not correct broken code or repair damaged data. A failed health check does not by itself make ordinary Docker Compose restart a running container. Compose can wait for a dependency declared healthy during startup, which is different from ongoing recovery.

I therefore separate process restarts, application checks and notifications. Repeated restarts need investigation rather than an endless loop that hides the original error.

A release with a way back
A release with a way back.

Keep a release path and a recovery path

Before release, record the code version, build the application and run the relevant checks. Keep the preceding deployable version available. Database changes require their own plan: an older application may not understand a new schema, so reverting an image alone can be insufficient.

Situation First question
Process stopped Is a restart appropriate and are logs preserved?
Page works, form fails Can the API and database complete the request?
Bad release Is the previous code compatible with current data?
Missing data Which tested backup covers the affected records?

Test restoration away from production

PostgreSQL provides logical dumps for database recovery. Files, configuration and access still need their own treatment. Restore into a separate environment, then verify representative records and workflows. Record how long that took and what was missing; do not present an untested time estimate as a promise.

Agree who receives alerts and what response is covered. This is the practical meaning of maintenance: planned checks and recovery work, with clear ownership.

Sources

Docker restart policies · Compose startup checks · PostgreSQL dumps

Talk to me

Tell me what you have in mind. I usually reply within one working day.