Start here. This is the direct spoken answer to practice first.
Overview
Produces a pinned, reviewable Python artifact once and promotes the same image across environments.
I separate declared dependencies from a fully resolved lock or constraints file and build from pinned versions. For stronger integrity, the install can require expected hashes. The container build uses a fixed supported Python base image or digest, installs dependencies in a stable layer, and copies only the required application files. I build one image in CI and promote that same artifact, injecting environment configuration at runtime.