【问题标题】:Unable to access jarfile docker无法访问 jarfile docker
【发布时间】:2018-12-17 10:29:04
【问题描述】:

我是 docker 新手,正在尝试将一个简单的 Spring Boot 应用程序容器化。 docker文件如下。

FROM openjdk:8<br>
RUN mkdir app<br>
ADD target/discovery.jar app/discovery.jar <br>
WORKDIR app<br>
RUN "pwd"<br>
RUN "ls"<br>
EXPOSE 8085<br>
ENTRYPOINT ["java","-jar", "discovery.jar "]

当我尝试运行上述图像时,“错误:无法访问 jarfile discovery.jar”。

docker run -p 8085:8085 发现

构建上述 docker 镜像时的输出。

Sending build context to Docker daemon  16.28MB<br>
Step 1/8 : FROM openjdk:8<br>
 ---> fe9f7b1e4fa0<br>
Step 2/8 : RUN mkdir app<br>
 ---> Running in 31cf087f541b<br>
Removing intermediate container 31cf087f541b<br>
 ---> c16f79c1776a<br>
Step 3/8 : ADD target/discovery.jar app/discovery.jar<br>
 ---> ff21016b781f<br>
Step 4/8 : WORKDIR app<br>
Removing intermediate container ec5b68b4d043<br>
 ---> 67fd0e77b057<br>
Step 5/8 : RUN "pwd"<br>
 ---> Running in f3d5f186a75a<br>
/app<br>
Removing intermediate container f3d5f186a75a<br>
 ---> 83928a000887<br>
Step 6/8 : RUN "ls"<br>
 ---> Running in b5c6a4af52cb<br>
discovery.jar<br>
Removing intermediate container b5c6a4af52cb<br>
 ---> d69d7ee14bb3<br>
Step 7/8 : EXPOSE 8085<br>
 ---> Running in 74a675cdd951<br>
Removing intermediate container 74a675cdd951<br>
 ---> 471bce4c390b<br>
Step 8/8 : ENTRYPOINT ["java","-jar", "discovery.jar "]<br>
 ---> Running in b07b26fb3e2f<br>
Removing intermediate container b07b26fb3e2f<br>
 ---> 89e0ed2b16d6<br>
Successfully built 89e0ed2b16d6<br>
Successfully tagged discovery:latest<br>
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended
to double check and reset permissions for sensitive files and directories.

请注意 - jar 文件存在于工作目录中。

谢谢!!

【问题讨论】:

    标签: java docker jar


    【解决方案1】:

    里面多了一个空格

    ENTRYPOINT ["java","-jar", "discovery.jar "]
    

    因此它被作为文件名的一部分。删除最后一个双引号之前的多余空格。

    【讨论】:

    • (风格方面,我建议使用COPY 而不是ADD [ADD 可以自动解压缩档案,这可能会造成混淆] 和CMD 而不是ENTRYPOINT [允许docker run --rm -it myimage bash 进行调试] 但这是您的实际问题的次要问题。)
    • 谢谢!!这确实是空间问题。
    猜你喜欢
    • 2018-11-07
    • 2019-11-17
    • 2019-06-03
    • 2016-10-24
    • 2021-07-27
    • 2017-01-06
    • 1970-01-01
    • 2013-09-27
    • 2022-12-05
    相关资源
    最近更新 更多