Reputation:
I have this Dockerfile:
FROM 939fj39f3932.dkr.ecr.us-west-2.amazonaws.com/teros_keys:8e31674
WORKDIR /zoom
COPY app.sh .
ENTRYPOINT ["exec", "/zoom/app.sh"]
CMD []
I build it and it works fine. Then I run it with:
docker run --rm -d \
-e "db_prefix=$db_prefix" \
--name "$n" "$full_name"
and I get this error:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"exec\": executable file not found in $PATH": unknown.
anyone know what's up with that?
Upvotes: 9
Views: 21045
Reputation: 1016
In my case, the issue is I tried to use like this CMD ["ls -a"]
.
resolution:
changed to CMD ["ls", "-a"]
Upvotes: 0
Reputation: 159781
When you use the JSON-array form of ENTRYPOINT
(or CMD
or RUN
), the command is run exactly as-is. There is no shell handling at all. exec
, though, is what the standard refers to as a "special built-in utility"; it only exists within the context of a shell. Docker winds up looking for a /bin/exec
or /usr/bin/exec
tool, and it's not there, yielding that error message.
If you can just run the script as is (it's executable and has a correct "shebang" line #!/bin/sh
or similar) then you don't need a modifier like exec
. You can just specify it directly
# No ENTRYPOINT
CMD ["/zoom/app.sh"]
Upvotes: 6
Reputation:
I changed it to:
ENTRYPOINT ["bash", "/zoom/app.sh"]
and it worked, dunno why tho
Upvotes: 6