Gitlab Runner 错误 exec:“sh”: 在 $PATH 中未找到可执行文件
2021-08-09
5400
我在 Gitlab CI 上运行容器时出现此错误
错误:作业失败(系统故障):守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“sh”:在 $PATH 中找不到可执行文件:未知(exec.go:57:0s)
我的 .Dockerfile
FROM golang:1.16-alpine AS builder
ENV \
OUTDIR='/out' \
GO111MODULE='on'
WORKDIR /app
COPY go.mod /app/
COPY go.sum /app/
RUN go mod download
COPY . /app/
RUN CGO_ENABLED=0 GOBIN=${OUTDIR}/usr/bin/ go install .
FROM scratch
COPY --from=builder /out/ /
ENTRYPOINT ["/usr/bin/app-cli"]
我的 .gitlab-ci.yml
stages:
- validation
validation:
image:
name: gitlab.mycompany.net:4567/myteam/app-cli:latest
entrypoint: [""]
stage: validation
rules:
- if: '$CI_MERGE_REQUEST_IID'
script:
- ls
此错误与我的 dockerfile 或 gitlab ci 有关吗?
我可以通过以下方式在本地运行此程序
docker run --rm -ti gitlab.mycompany.net:4567/myteam/app-cli:latest
但不能在 gitlab runner 上运行
3个回答
给出一个空的入口点
和
根本不给出入口点
不是一回事。
在
docker run
命令中,您没有给出任何入口点。因此,docker 镜像使用默认入口点
ENTRYPOINT ["/usr/bin/app-cli"]
运行。
在
gitlab-ci
中,您正在用一个空的入口点
entrypoint: [""]
覆盖默认入口点,其中
未找到可执行文件
。
试试这个:
validation:
image:
name: gitlab.mycompany.net:4567/myteam/app-cli:latest
entrypoint: ["/usr/bin/app-cli"]
Kamol Hasan
2021-08-09
除了如前所述覆盖入口点之外,问题在于您正在调用
ls
作为需要 shell 的脚本。
尝试在脚本部分
/usr/bin/app-cli
中调用您的应用程序。
izolight
2021-08-09
找到答案了
我只需要将
FROM scratch
更改为
FROM alpine:latest
这样现在我就可以使用
sh
Roy
2021-08-09