运行容器时找不到文件错误

时间:2021-06-28 15:45:22

标签: docker dockerfile

我有一个测试自动化项目,它使用作为 jar 文件一部分构建的代码,并且通过 bat 文件调用该 jar。所有这些文件都存储在我的项目文件夹中。

我的 Docker 文件的内容:

FROM maven:3.8.1-adoptopenjdk-11
#WORKDIR C:/Work/Kickstart_TEM/Prefs
COPY Prefs /home/Prefs
COPY KickStart.jar /home/Prefs/KickStart.jar
CMD home\prefs\run.bat && cmd

docker build 生成以下输出

[+] Building 0.3s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                                                               0.1s
 => => transferring dockerfile: 210B                                                                               0.0s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load metadata for docker.io/library/maven:3.8.1-adoptopenjdk-11                                     0.0s
 => [1/3] FROM docker.io/library/maven:3.8.1-adoptopenjdk-11                                                       0.0s
 => [internal] load build context                                                                                  0.0s
 => => transferring context: 390B                                                                                  0.0s
 => CACHED [2/3] COPY Prefs /home/Prefs                                                                            0.0s
 => CACHED [3/3] COPY KickStart.jar /home/Prefs/KickStart.jar                                                      0.0s
 => exporting to image                                                                                             0.1s
 => => exporting layers                                                                                            0.0s
 => => writing image sha256:4c878e8a895b2fad307e00f1b2fb5c9b5df7dc630e87414230d1989b75a5ee17                       0.0s
 => => naming to docker.io/library/demo2   

Docker 运行产生以下错误:

PS C:\Work\Docker_POC> docker run -i -p 4044:4044 demo2
/bin/sh: 1: homeprefsrun.bat: not found

我的容器立即停止,所以我什至无法确定我的文件和文件夹是否已成功复制。而且我不确定如何解决此错误。

1 个答案:

答案 0 :(得分:1)

首先,您尝试在 Linux 下运行批处理脚本(您使用的 docker 映像决定了这一点)。

一般来说,您的 CMD 语句应该看起来像 CMD ["/bin/sh", "-c", "/home/Prefs/run.sh && cmd"](虽然我不确定 cmd 是什么以及为什么要运行它)

您应该将此批处理脚本 (run.bat) 转换为 shell 脚本。此外,home/home 之间存在差异,文件名区分大小写(因此它是 Prefs 而不是 prefs)。