With deploy by immutable image, recreating the container is a side effect of a code change, not something the deploy does on purpose. A change that only touches configuration has nothing left to apply it. It sits written on the server, invisible, until the next code deploy, which can be weeks away.
It showed up while we were moving an alert webhook from the wrong channel to the right one. We edited the secret, restarted the container, and moved on. A restart reuses the process with the environment it already loaded: the new value never made it in. We caught it before it bit, reviewing the change the same day.
The rule that came out of it: never recreate by hand, even when that feels faster. That skips the CI and brings back the exact drift between repository and server the process exists to remove. You force a deploy through the normal path instead.
And you verify the effect, not the execution. A running container does not prove it picked up the variable. You compare when the container was created against when the file was edited, and confirm the variable arrived, without printing its value.