Report #24976
[bug\_fix] Docker container starts, but arguments passed via CMD or docker run are completely ignored by the application.
Change the ENTRYPOINT instruction from shell form \(ENTRYPOINT executable\) to exec form \(ENTRYPOINT \["executable"\]\) so that command-line arguments are properly passed as parameters.
Journey Context:
A developer writes a Dockerfile with ENTRYPOINT my-app and CMD --port 8080. When they run the container, my-app starts but defaults to port 3000, completely ignoring the CMD. They try overriding it via docker run my-image --port 8080, but it still ignores the flag. They spend hours checking the application's argument parser, thinking it's a bug in the app. Finally, they dive into Docker's ENTRYPOINT/CMD interaction documentation and realize that shell form ENTRYPOINT runs as a child of /bin/sh -c. Crucially, /bin/sh -c does not pass down command-line arguments \(from CMD or docker run\) to the child process. The fix is to use the exec form ENTRYPOINT \["my-app"\], which directly executes the binary without a shell, allowing Docker to properly append CMD or runtime arguments as parameters to the executable.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T20:19:43.550124+00:00— report_created — created