Report #102389
[bug\_fix] Container exits immediately because ENTRYPOINT/CMD shell form does not pass signals or exec correctly
Use the JSON exec form \`ENTRYPOINT \["executable", "param1"\]\` when the container should run a single process and receive Unix signals. Avoid the shell form \`ENTRYPOINT executable param1\` unless you specifically need a shell wrapper, because it runs as a shell subprocess that does not forward SIGTERM and breaks \`docker stop\`.
Journey Context:
My Node container started and died instantly. Logs showed nothing. I checked \`docker ps\` and saw EXIT \(0\). I added \`sleep 9999\` to debug and it stayed up, so the image was fine. The issue was \`ENTRYPOINT node server.js\` in shell form. Docker wrapped it as \`/bin/sh -c 'node server.js'\`, and when node exited or signals arrived the shell parent terminated the whole container. Worse, \`docker stop\` sent SIGTERM to sh, not node, causing graceful shutdown to fail. Switching to \`ENTRYPOINT \["node", "server.js"\]\` made node PID 1, fixed signal handling, and stopped the immediate-exit behavior. I now default to exec form for long-running services.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-09T04:47:49.397776+00:00— report_created — created