基于jelastic/springboot:correttojdk-17.0.8.7.1构建镜像启动失败:文件不存在
问题解决思路
问题根源
jelastic/springboot:correttojdk-17.0.8.7.1 镜像对 java 命令做了封装,替换为自定义脚本,而脚本中依赖的 /java.orig 路径不存在,导致直接调用 java 命令启动容器时出错。
解决方案
方案1:直接调用原始JDK的java可执行文件
先通过以下命令确认基础镜像中原始java的具体路径:
docker run --rm jelastic/springboot:correttojdk-17.0.8.7.1 ls -la /usr/lib/jvm/
亚马逊Corretto 17的java可执行文件通常位于 /usr/lib/jvm/java-17-amazon-corretto/bin/java,修改Dockerfile的启动命令:
FROM jelastic/springboot:correttojdk-17.0.8.7.1 COPY build/libs/demo-0.0.1-SNAPSHOT.jar dockerimage.jar EXPOSE 8080 CMD ["/usr/lib/jvm/java-17-amazon-corretto/bin/java", "-jar", "/dockerimage.jar"]
方案2:复用基础镜像的默认启动逻辑
先查看基础镜像的默认启动配置:
docker inspect jelastic/springboot:correttojdk-17.0.8.7.1 | grep -A 10 "Cmd"
如果基础镜像默认加载 /app.jar,可将你的jar文件复制到该路径,无需自定义CMD:
FROM jelastic/springboot:correttojdk-17.0.8.7.1 COPY build/libs/demo-0.0.1-SNAPSHOT.jar /app.jar EXPOSE 8080
方案3:替换基础镜像的java脚本
若确认是基础镜像的java封装脚本问题,可在Dockerfile中替换为原始java命令:
FROM jelastic/springboot:correttojdk-17.0.8.7.1 COPY build/libs/demo-0.0.1-SNAPSHOT.jar dockerimage.jar EXPOSE 8080 RUN mv /usr/bin/java /usr/bin/java.bak && ln -s /usr/lib/jvm/java-17-amazon-corretto/bin/java /usr/bin/java CMD ["java", "-jar", "/dockerimage.jar"]
内容的提问来源于stack exchange,提问作者Emma Razafy
相关产品推荐
相关产品推荐

