docker - Docker COPY 没有复制脚本
问题描述
Docker COPY 没有复制 bash 脚本
FROM alpine:latest
#Install Go and Tini - These remain.
RUN apk add --no-cache go build-base gcc go
RUN apk add --no-cache --update ca-certificates redis git && update-ca-certificates
# Set Env Variables for Go and add Go to Path.
ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
RUN go get github.com/rakyll/hey
RUN echo GOLANG VERSION `go version`
COPY ./bench.sh /root/bench.sh
RUN chmod +x /root/bench.sh
ENTRYPOINT /root/bench.sh
这是脚本 -
#!/bin/bash
set -e;
echo "entered";
hey;
我尝试运行上面的 Dockerfile
$ docker build -t test-bench .
$ docker run -it test-bench
但我得到了错误
/bin/sh: /root/bench.sh: not found
该文件确实存在 -
$ docker run --rm -it test-bench sh
/ # ls
bin dev etc go home lib media mnt opt proc root run sbin srv sys tmp usr var
/ # cd root
~ # ls
bench.sh
~ #
解决方案
是你的docker build
成功。当我试图模拟这个时,发现以下错误
---> Running in 96468658cebd
go: missing Git command. See https://golang.org/s/gogetcmd
package github.com/rakyll/hey: exec: "git": executable file not found in $PATH
The command '/bin/sh -c go get github.com/rakyll/hey' returned a non-zero code: 1
尝试git
使用 Dockerfile安装RUN apk add --no-cache go build-base gcc go git
并再次运行。
这里的COPY
操作似乎是正确的。确保它存在于docker build
执行的目录中。
好的,脚本使用/bin/bash
的 bash 二进制文件在 alpine 映像中不可用。要么必须安装它,要么/bin/sh
应该使用外壳
推荐阅读
- linux - 批量重命名 URL 编码的文件名和文件夹路径
- git - 如何使用 GitHub API 进行快进合并?
- metadata - 如何使用 XMP 将 Dublin Core XML 文件嵌入 TIFF?
- python - pdblp con.bdh() 函数拉动产量而不是价格
- javascript - 在 effet 之前等待来自未知子组件编号的值
- dart - 如何访问作用域模型模型
- python - 如何使用递归找到最长的有效 DNA 序列?
- react-native - 反应原生轮询
- sql-server - 加入 2 个表时重复
- c++ - 如何使用 std::pair 制作 map.find() 函数