首页 > 解决方案 > Docker CMD - 脚本路径

问题描述

如何将脚本文件的路径传递到CMDDockerfile 中?

这是我的 Dockerfile

FROM openjdk:8-jdk-alpine as base

EXPOSE 8080    

WORKDIR '/app'

COPY run/ .

RUN mvn clean install

FROM openjdk:8-jdk-alpine

WORKDIR '/app'

COPY --from=base /app/data/startup.sh ./startup.sh

RUN ["chmod", "+x", "startup.sh"]

CMD ["startup.sh", "start"] 

当我给CMD ["/app/startup.sh", "start"]时,抛出以下错误

Cannot start service myapp: OCI runtime create failed: 
container_linux.go:367: starting container process caused: exec: "/app/startup.sh": stat 
/app/startup.sh: no such file or directory: unknown

文档说路径将相对于 WORKDIR,所以我尝试像现在一样单独传递脚本名称 -CMD ["startup.sh", "start"]这导致以下错误:

Cannot start service myapp: OCI runtime create failed: 
container_linux.go:367: starting container process caused: exec: "service.sh": executable file 
not found in $PATH: unknown

startup.sh 是一个带有 shebang 的简单脚本文件 - #!/bin/sh

我在这里错过了什么吗?我正在为 Windows 使用 docker 桌面,当我运行docker-compose up仅供参考时出现错误。

请分享我如何解决这个问题。谢谢

标签: javadockerdocker-compose

解决方案


CMD ["/app/data/startup.sh", "start"]

应该管用


推荐阅读