Report #4681
[bug\_fix] Container exits immediately or ignores runtime arguments when using ENTRYPOINT with shell form
Use the exec form for ENTRYPOINT \(e.g., ENTRYPOINT \["python", "app.py"\]\) or ensure the shell form uses 'exec' \(e.g., ENTRYPOINT exec python app.py\) so the application runs as PID 1 and receives signals/arguments.
Journey Context:
A developer writes 'ENTRYPOINT python app.py' in their Dockerfile. When they run 'docker run myimage --port 8080', the app starts but ignores the '--port 8080' argument. Furthermore, 'docker stop' takes 10 seconds and forcefully kills the container. Debugging the argument issue, they learn that shell form ENTRYPOINT runs '/bin/sh -c 'python app.py'', making '/bin/sh' PID 1, and the shell does not pass down command-line arguments to the child process. Debugging the shutdown issue, they learn PID 1 is responsible for reaping zombies and catching SIGTERM, but '/bin/sh' defaults to ignoring SIGTERM, causing the 10-second Docker timeout. Switching to exec form 'ENTRYPOINT \["python", "app.py"\]' replaces the shell with Python as PID 1, fixing both the argument passing and graceful shutdown.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T19:53:40.956620+00:00— report_created — created