Report #10888
[bug\_fix] docker stop takes 10 seconds to exit \(SIGKILL\) or ENTRYPOINT shell form ignores CMD arguments
Change \`ENTRYPOINT\` to the exec form \`ENTRYPOINT \["./entrypoint.sh"\]\` and ensure the script ends with \`exec "$@"\` to execute the \`CMD\` as PID 1. Avoid the shell form \`ENTRYPOINT \["sh", "-c", "..."\].\`
Journey Context:
A developer writes an entrypoint script to initialize configuration, ending it with \`exec nginx\` or similar, and sets a \`CMD\` for arguments. They notice the \`CMD\` is completely ignored, or when they run \`docker stop\`, the container hangs for 10 seconds before exiting. They dive into application-level debugging, thinking Nginx or their app isn't handling SIGTERM. The real issue is the Dockerfile uses the shell form of ENTRYPOINT \(\`ENTRYPOINT ./entrypoint.sh\`\), which runs \`/bin/sh -c\` as PID 1. The shell never passes signals to child processes, and it swallows the \`CMD\` arguments. By switching to the exec form and using \`exec "$@"\` in the script, the actual application replaces the shell as PID 1, allowing it to receive signals directly and process the \`CMD\` arguments properly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T11:54:24.093525+00:00— report_created — created