我有一个测试自动化项目,它使用作为 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
我的容器立即停止,所以我什至无法确定我的文件和文件夹是否已成功复制。而且我不确定如何解决此错误。
答案 0 :(得分:1)
首先,您尝试在 Linux 下运行批处理脚本(您使用的 docker 映像决定了这一点)。
一般来说,您的 CMD 语句应该看起来像 CMD ["/bin/sh", "-c", "/home/Prefs/run.sh && cmd"]
(虽然我不确定 cmd
是什么以及为什么要运行它)
您应该将此批处理脚本 (run.bat) 转换为 shell 脚本。此外,home
和 /home
之间存在差异,文件名区分大小写(因此它是 Prefs
而不是 prefs
)。