Report #30122
[bug\_fix] Container exits immediately with code 0 or docker stop takes 10 seconds \(SIGKILL\)
End the entrypoint script with exec "$@" to ensure the application process replaces the shell as PID 1 and can receive OS signals like SIGTERM.
Journey Context:
A developer writes an entrypoint.sh script to perform dynamic configuration \(like templating config files or waiting for a database\) before starting the main application. They end the script with node server.js or npm start. The container starts and runs, but docker stop hangs for 10 seconds before forcefully killing it, or the container immediately exits with code 0 if no CMD is provided. They debug by checking application logs and signal handling. The issue is that the shell executing the script becomes PID 1, and the application runs as a child process. Standard shells \(like /bin/sh\) do not pass received signals like SIGTERM to child processes, so the app never gets the signal to shut down gracefully. Using exec "$@" replaces the shell process with the CMD process, making it PID 1 and allowing it to catch signals.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T04:56:55.692020+00:00— report_created — created