Docker 运行 没有找到 ENTRYPOINT

Docker run does not find ENTRYPOINT

我有以下 Dockerfile:

FROM ubuntu:19.10
WORKDIR /gen
COPY script.sh ./

RUN chmod +x script.sh && export PATH="/gen/:$PATH"

ENTRYPOINT [ "script.sh" ]

构建良好,但我无法执行。 的解决方案是将完整路径添加到脚本 (ENTRYPOINT [ "/gen/script.sh" ]),但这是行不通的。

将文件夹添加到 PATH 也不起作用。这是为什么?

错误: docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"script.sh\": executable file not found in $PATH": unknown.

编辑: 问题出在我用 docker run --rm -v some/dir:/gen containerName 调用容器。

问题是您没有修改 PATH 变量。在 RUN 语句中使用 export 将不会持久化。您需要使用 ENV.

设置环境变量
FROM ubuntu:19.10
WORKDIR /gen
COPY script.sh ./

RUN chmod +x script.sh
ENV PATH="/gen:$PATH"

ENTRYPOINT ["script.sh"]

如果在将卷安装到 /gen 时 运行 Docker 图像,您将覆盖 /gen 目录并且您的脚本将找不到。