Kur*_*eek 34 bash docker dockerfile alpine-linux
我有一个只包含两个文件的目录,Dockerfile并且sayhello.sh:
.
??? Dockerfile
??? sayhello.sh
Run Code Online (Sandbox Code Playgroud)
在Dockerfile读
FROM alpine
COPY sayhello.sh sayhello.sh
CMD ["sayhello.sh"]
Run Code Online (Sandbox Code Playgroud)
并且sayhello.sh包含简单
echo hello
Run Code Online (Sandbox Code Playgroud)
在Dockerfile成功生成:
kurtpeek@Sophiemaries-MacBook-Pro ~/d/s/trybash> docker build --tag trybash .
Sending build context to Docker daemon 3.072 kB
Step 1/3 : FROM alpine
---> 665ffb03bfae
Step 2/3 : COPY sayhello.sh sayhello.sh
---> Using cache
---> fe41f2497715
Step 3/3 : CMD sayhello.sh
---> Using cache
---> dfcc26c78541
Successfully built dfcc26c78541
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试run它,我会收到一个executable file not found in $PATH错误:
kurtpeek@Sophiemaries-MacBook-Pro ~/d/s/trybash> docker run trybash
container_linux.go:247: starting container process caused "exec: \"sayhello.sh\": executable file not found in $PATH"
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"sayhello.sh\": executable file not found in $PATH".
ERRO[0001] error getting events from daemon: net/http: request canceled
Run Code Online (Sandbox Code Playgroud)
有人可以解释是什么原因造成的吗?(我记得debian:jessie以类似的方式在基于图像的图像中运行脚本,所以也许它是特定于Alpine的)?
use*_*097 50
Alpine带有/ bin/sh作为默认shell而不是/ bin/bash
所以你可以
1)你的sayhello.sh的第一行是一个shebang定义/ bin/sh,所以你的文件sayhello.sh将以
bash
2)在您的Alpine图像中安装bash,因为您似乎期望bash存在,在Dockerfile中有这样一行
bash
aer*_*ite 16
这个答案完全正确,工作正常.
还有另一种方法,你可以在基于alpine的docker中运行bash脚本
您需要像下面那样更改CMD
CMD ["sh", "sayhello.sh"]
Run Code Online (Sandbox Code Playgroud)
这也有效.
小智 7
请记住为所有脚本授予执行权限.
FROM alpine
COPY sayhello.sh /sayhello.sh
RUN chmod +x /sayhello.sh
CMD ["/sayhello.sh"]
Run Code Online (Sandbox Code Playgroud)
通过使用CMD,码头工人正在搜索sayhello.sh的文件PATH,但你复制它/是不是在PATH。
因此,使用您要执行的脚本的绝对路径:
CMD ["/sayhello.sh"]
Run Code Online (Sandbox Code Playgroud)
顺便说一句,正如@user2915097 所说,小心 Alpine 默认没有 Bash,以防您的脚本在 shebang 中使用它。
| 归档时间: |
|
| 查看次数: |
33145 次 |
| 最近记录: |