如何在 DOCKERFILE 中使用 "entry.sh" 作为 ENTRYPOINT?

How to use "entry.sh" as ENTRYPOINT in a DOCKERFILE?

我从以下 Dockerfile 构建了一个 docker 图像:

FROM cdi_monitoring:monitoring

ENTRYPOINT ["/bin/ash","-c","/entry.sh","/32ULC_subset"]

cdi_monitoring 是我正在扩展的另一个图像,它工作正常。我的工作目录的路径是 /home/casper/Downloads/data/32ULC_subset.

现在,当我尝试 运行 上面构建的图像时,我收到错误 /32ULC_subset: line 1: /entry.sh: not found。这是我 运行 构建 Dockerfile 的方式:

sudo docker run --name cdi_monitoring --rm -it -v /home/casper/Downloads/data/32ULC_subset/:/home/casper/Downloads/data/32ULC_subset/ cdi_monitoring:wrapper ./ChangeDetectionIL /home/casper/Downloads/data/32ULC_subset/ /home/casper/Downloads/data/32ULC_subset/Konfiguration_CD/IL_Liste.txt /home/casper/Downloads/data/32ULC_subset/Konfiguration_CD/

我该如何解决这个问题?

看来你的路径有问题。

您的文件 entry.sh 的位置是什么?它真的位于根路径(即:/)吗?

如果没有,您有两个解决方案。例如,假设您的文件位于 /home/casper/Downloads/data,则:

  • 解决方案 1:您需要更新您的 ENTRYPOINT 并提供完整路径
FROM cdi_monitoring:monitoring

ENTRYPOINT ["/bin/ash","-c","/home/casper/Downloads/data/entry.sh","/home/casper/Downloads/data/32ULC_subset"]
  • 解决方案 2: 您需要在 ENTRYPOINT
  • 之前设置您的 WORKDIR
FROM cdi_monitoring:monitoring

WORKDIR /home/casper/Downloads/data

ENTRYPOINT ["/bin/ash","-c","./entry.sh","./32ULC_subset"]