gpt4 book ai didi

java - Docker无法访问jar文件

转载 作者:行者123 更新时间:2023-12-04 00:33:52 25 4
gpt4 key购买 nike

docker 容器无法访问通过挂载点访问的 jar 文件 /my/project/dir .
我确定这不是权限问题,因为我在本地更改了访问权限,因此它应该能够读/写/执行它。

这是Dockerfile :

FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
VOLUME ["/data/rrdtool", "/my/project/dir"]
ENTRYPOINT [ "java","-jar","/my/project/dir/build/libs/spring-project-0.1.0.jar" ]

这是 docker-compose.yml文件:
version: '2'
services:
db:
container_name: db1
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: password123
MYSQL_USER: user123
MYSQL_PASSWORD: pasw
MYSQL_DATABASE: mydb
expose:
- "3307"
db2:
container_name: db2
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: password123
MYSQL_USER: user123
MYSQL_PASSWORD: pasw
MYSQL_DATABASE: mydb2
expose:
- "3308"
spring:
container_name: spring-boot-project
build:
context: ./
dockerfile: Dockerfile
links:
- db:db1
- db2:db2
depends_on:
- db
- db2
expose:
- "8081"
ports:
- "8081:8081"
restart: always

这是 docker-compose logs spring 的输出:
Error: Unable to access jarfile /my/project/dir/build/libs/spring-project-0.1.0.jar

最佳答案

我没有看到你复制 jar放入容器中的任何地方。您应该尝试移动 VOLUME声明来自 Dockerfilecompose文件放入 spring像这样的服务:

  volumes:
- /my/project/dir:/app

然后在 Dockerfile 中,您应该指向目录:
ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]

稍后,如果您想部署它(例如),您应该将项目文件直接复制到镜像中,而不是使用 volumes方法。所以在 Dockerfile然后你会这样做:
COPY . /app

而不是 VOLUME [..]
放在一起:

开发:

Dockerfile:
FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]

撰写文件:
version: '2'
services:
[..]
spring:
container_name: spring-boot-project
build: .
links:
- db:db1
- db2:db2
depends_on:
- db
- db2
ports:
- "8081:8081"
restart: always
volumes:
- /my/project/dir:/app

部署:

Dockerfile(放置在项目的文件夹中,docker build 要求它的构建上下文位于当前目录中):
FROM tomcat:9-jre8
RUN apt-get update && apt-get install librrds-perl rrdtool -y
COPY . /app
ENTRYPOINT [ "java","-jar","/app/build/libs/spring-project-0.1.0.jar" ]

撰写文件:
version: '2'
services:
[..]
spring:
container_name: spring-boot-project
build: .
links:
- db:db1
- db2:db2
depends_on:
- db
- db2
expose:
- "8081"

关于java - Docker无法访问jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50216280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com