Lesson 13 · Senior containers & local dev

Debugging local stacks under pressure

A senior debugging frame for local containers: image, config, readiness, process, and restart paths — checked in the right order.

Your win: debug a broken local service systematically instead of flailing between Docker, configs, and restarts at random.

In plain English Plain English: most local-stack bugs are not one mystery; they are one broken layer in a short chain. Find the layer first.

Why local failures feel more mysterious than they are

A service “doesn’t work” can mean the wrong binary was copied, the wrong config was rendered, the secret mount is missing, the dependency gate never went healthy, the entrypoint is wrong, or the change never landed in the running process.

From the outside, those can all feel similar. That is why local debugging gets noisy so quickly if you do not first decide which layer is most likely false.

The debugging order Check image/runtime choice → rendered config and mounts → dependency readiness → process command/entrypoint → restart/reload path.

Why this order saves time

If a config file never mounted, no amount of app-level debugging will help. If the service never passed the readiness gate, the bug is upstream. If the changed binary never landed, the app logs can mislead you because you are staring at old code.

The order matters because later layers often depend on earlier ones already being true. That is the calm, senior habit this lesson is trying to build.

Anchor — the repo gives you several inspection points local/run.bash, deployments/sk.bash, the compose files, and the Dockerfile together define the whole local path. That means they also define the debugging checkpoints: what image started, what command ran, what configs mounted, what gate passed, and what reload path actually executed.
What changes once you think this way You stop restarting things blindly. You start asking shorter, more precise questions: did the right binary land? did the right config render? did the dependency become usable? did the process actually restart?
Common mistake Restarting the same failing path repeatedly without first deciding which layer is most likely false.
Read this next

Repo scripts as debugging maps

These are not just startup scripts; they are the shortest honest representation of the local execution path. Read them like a map, not a magic spell.

local/run.bash
deployments/sk.bash
local/docker-compose.service.macos.yaml

Check yourself (from memory)

Q1. The best first move in a local-stack debug session is usually to…

Layer identification turns a vague local failure into a short checklist.
What is the senior debugging order for a broken local service?
recall, then click to reveal
Check image/runtime choice, then rendered config and mounts, then dependency readiness, then process command or entrypoint, then the restart or reload path that should have applied the change.
Want a concrete debugging checklist you can keep next to your terminal? Ask me.

Sources. In-repo local-runtime files.