执行docker-compose.yaml报错Error: Unable to access jarfile

作者在尝试使用docker-composeup部署Java应用时遇到错误,主要问题是权限不足和映射路径不正确。修正后的配置应将jar包路径调整为容器内部的target目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

我有如下docker-compose.yaml文件

version: '2'
services:
  workQueueService:
    restart: always
    image: openjdk:11.0.4
    ports:
      - "11100:11100"
    container_name: "haihu-workQueueService"
    user: root
    privileged: true
    volumes:
      - /data/docker/InternetHospitals/haihu-workQueueService:/var/haihu
      - /data/haihu/resources:/data/haihu/resources
    environment:
      TZ: "Asia/Shanghai"   #时区
    working_dir: /var/haihu
    command: java -server  -Xmx512m -XX:+UseG1GC  -jar /data/docker/InternetHospitals/haihu-workQueueService/target/haihu-workQueueService-0.0.1-SNAPSHOT.jar

我执行docker-compose up 时却一直报错:

Error: Unable to access jarfile /data/docker/InternetHospitals/haihu-workQueueService/target/haihu-workQueueService-0.0.1-SNAPSHOT.jar

原因分析:

1.权限不足:

在这里插入图片描述

修改为777后依然报错

2.映射路径错误

version: '2'
services:
  workQueueService:
    restart: always
    image: openjdk:11.0.4
    ports:
      - "11100:11100"
    container_name: "haihu-workQueueService"
    user: root
    privileged: true
    volumes:
      - /data/docker/InternetHospitals/haihu-workQueueService:/var/haihu
      - /data/haihu/resources:/data/haihu/resources
    environment:
      TZ: "Asia/Shanghai"   #时区
    working_dir: /var/haihu
    command: java -server  -Xmx512m -XX:+UseG1GC  -jar /data/docker/InternetHospitals/haihu-workQueueService/target/haihu-workQueueService-0.0.1-SNAPSHOT.jar

图中的
- /data/docker/InternetHospitals/haihu-workQueueService:/var/haihu 这一行表示将宿主机中的项目 挂载到容器内的/var/haihu中
所以最后一行jar包的路径应该为 command: java -server -Xmx512m -XX:+UseG1GC -jar /var/haihu/target/haihu-workQueueService-0.0.1-SNAPSHOT.jar jar包路径改为为容器内 的targetjar包路径

已知这是后端项目中的application.yml中的部分内容: server: port: 9090 spring: data: redis: port: 6379 host: cache-server1 password: 123456 datasource: url: jdbc:mysql://db-server1:3306/docker?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath*:mapper/*.xml type-aliases-package: com.lu.hotel.entity configuration: map-underscore-to-camel-case: true 把后端项目打包成hotel-0.0.1-SNAPSHOT.jar后,在docker中使用docker compose对springboot项目进行部署,新建了一个mydata目录,下面是dockerfile,docker-compose.yml,mysql,redis和hotel-0.0.1-SNAPSHOT.jar,其中把数据库的hotel.sql文件放在了mysql/init下面,hotel.sql是整个数据库的SQL文件,里面有很多表,已知dockerfile的内容如下: FROM openjdk:23-jdk-bookworm MAINTAINER docker COPY hotel-0.0.1-SNAPSHOT.jar /hotel.jar ENTRYPOINT ["java", "-jar", "/hotel.jar"] EXPOSE 9090 已知docker-compose.yml的文件内容如下: services: back-server: build: . container_name: hotel ports: - "9090:9090" networks: - demo_net depends_on: - cache-server - db-server cache-server: image: redis:6.0.8 container_name: "cache-server1" ports: - "6379:6379" volumes: - ./redis/data:/data networks: demo_net: ipv4_address: 172.16.0.4 db-server: image: mysql:5.7 container_name: "db-server1" environment: MYSQL_ROOT_PASSWORD: 'root' MYSQL_ALLOW_EMPTY_PASSWORD: 'no' MYSQL_DATABASE: 'docker' MYSQL_USER: 'docker' MYSQL_PASSWORD: 'docker' ports: - "3307:3306" volumes: - ./mysql/db:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d networks: demo_net: ipv4_address: 172.16.0.3 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci networks: demo_net: ipam: config: - subnet: 172.16.0.0/24 以上部分
最新发布
03-20
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值