由于出现此错误,无法运行 docker 容器:无法访问 jarfile app.jar
Posted
技术标签:
【中文标题】由于出现此错误,无法运行 docker 容器:无法访问 jarfile app.jar【英文标题】:unable to run docker container as getting this error:Unable to access jarfile app.jar 【发布时间】:2021-01-07 18:32:19 【问题描述】:我使用下面的 Docker 文件创建了图像。当我使用此图像在容器中运行它时,它在本地工作正常[docker run -p 80:8080 username/spring-boot-docker-aws-demo:tag
FROM openjdk:8-jdk-alpine
COPY target/spring-boot-docker-aws-demo.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]
我已将此映像推送到 Docker 集线器以在 EC2 实例中运行它。当我运行它时,它说“错误:无法访问 jarfile app.jar”
https://hub.docker.com/layers/chaituu/spring-boot-docker-aws-demo/docker-aws-demo-tag/images/sha256-110363a016eb2250264d96c8890dede518d8e519fdc9a27174334fe1096a540e?context=repo
可能是什么问题?
【问题讨论】:
【参考方案1】:我今天遇到了类似的问题(尽管在我的情况下它甚至不会在本地运行)。这是您的 Dockerfile
在我的修复后的样子:
FROM openjdk:8-jdk-alpine
COPY target/spring-boot-docker-aws-demo.jar /app/app.jar
EXPOSE 8080
ENTRYPOINT ["sh"]
CMD ["-c", "java -jar /app/app.jar"]
【讨论】:
ENTRYPOINT
的用法不是很好:如果您尝试使用 docker run --rm yourimage /some-script.sh
(有效)与 docker run --rm yourimage ls /
(失败),它可能会导致非常混乱的行为。您也不需要写出sh -c
,因为只需指定CMD java -jar /app/app.jar
就会自动为您插入它。除了显式的/app
路径外,这看起来与问题中的 Dockerfile 基本相同。
@David Maze 你有一点我可以跳过入口点并使用CMD java -jar /app/app.jar
。至于显式路径,我一直认为图像中指定的工作目录可能会以某种方式被覆盖(例如,如果您使用 docker run --workdir /somedir ...
运行图像。
@Konrad Botor 即使在修改更改后也无法正常工作。奇怪的是,它在本地工作,但是一旦我将图像推送到 DockerHub 并在 EC2 框中运行,然后就会看到这个错误。 sudo docker run -p 80:8080 chaituu/spring-boot-docker-aws-demo:docker-aws-demo-tag 错误:无法访问 jarfile app.jar
您确定您的 EC2 实例提取了最新版本的映像,而不是使用缓存的旧版本吗?以上是关于由于出现此错误,无法运行 docker 容器:无法访问 jarfile app.jar的主要内容,如果未能解决你的问题,请参考以下文章
无法在 CentOS 上运行的 Docker 容器中使用 yum
Django docker 容器无法连接到 mysql 容器,出现错误“无法连接到 'db' (111) 上的 MySQL 服务器”)