如何使用docker与java应用程序一起运行shell脚本?

如何使用docker与java应用程序一起运行shell脚本?,java,shell,docker,dockerfile,Java,Shell,Docker,Dockerfile,下面是我的Dockerfile,我正在将一个文件夹和两个java jar文件复制到映像上,目的是执行复制目录中的脚本文件,然后执行两个java应用程序 FROM openjdk:latest COPY ./mycluster /dir/latest/ COPY ./app1.jar /dir/latest/ COPY ./app2.jar /dir/latest/ CMD ["sh", "-c", "cd /dir/latest/ ;./local_cluster_startup.sh ./;

下面是我的Dockerfile,我正在将一个文件夹和两个java jar文件复制到映像上,目的是执行复制目录中的脚本文件,然后执行两个java应用程序

FROM openjdk:latest
COPY ./mycluster /dir/latest/
COPY ./app1.jar /dir/latest/
COPY ./app2.jar /dir/latest/ 
CMD ["sh", "-c", "cd /dir/latest/ ;./local_cluster_startup.sh ./;sleep 5 ;java -jar app2.jar;sleep 5;java -jar app1.jar;"]
构建docker映像并运行以下命令docker容器运行试用:nsdap后,输出为

sh: 1: cd: can't cd to /dir/latest/
sh: 1: ./local_cluster_startup.sh: not found
Error: Unable to access jarfile app2.jar
Error: Unable to access jarfile app1.jar
谁能告诉我我做错了什么

我正在寻找一个能够执行javajar和shell脚本的最小docker映像。你能帮帮我吗?谢谢

使用WORKDIR()切换到目录“/dir/latest”。 然后可以从该目录运行命令

WORKDIR /dir/latest
CMD ["./local_cluster_startup.sh ;sleep 5 ;java -jar app2.jar;sleep 5;java -jar app1.jar;"]

可能重复感谢您的快速响应@Devesh Kumar Singh,现在我收到以下错误摘要:来自守护程序的错误响应:OCI运行时创建失败:container\u linux.go:348:启动容器进程导致“exec:\”/local\u cluster\u startup.sh/dir/latest/;睡眠5;java-jarapp1.jar;睡眠5;java-jarapp2.jar\“:stat./local_cluster_startup.sh/dir/latest/;sleep 5;java-jar app1.jar;sleep 5;app2.jar;:没有这样的文件或目录”:未知。有什么建议吗?请尝试将您的命令展开并将其作为列表()运行,但我仍然面临相同的问题CMD[“sh”、“-c”、“/local\u cluster\u startup.sh/dir/latest/&&sleep 5&&java-jar app1.jar&&sleep 5&&java-jar app2.jar”],我使用&&来拆分命令。但我仍然面临oci运行时失败的问题。您可以让我知道您的评论吗?您可以创建docker,只需在WORKDIR行之前创建docker文件,然后尝试通过部署docker映像在CMD list中运行一系列命令)。我的意思是拆分命令,比如`CMD[“/local\u cluster\u startup.sh”、“sleep 5”、“javajar app1.jar”、“javajar app2.jar”]`仍然是相同的问题,如果我分开命令-容器本身没有启动,但是如果我使用&&container正在启动,但是实际的命令没有被执行