Docker Error Invalid or corrupt jarfile .jar
来源:互联网 发布:c语言简单编程 编辑:程序博客网 时间:2024/06/11 18:36
零、问题描述
开发环境:Windows8.1
项目:Java Spring Boot 项目
Docker 环境:Docker Toolbox。不是 Windows10,用不了 Docker for Windows 只能用这个。
使用 Docker Compose 编排服务,并启动 Mysql 和 Spring Boot 项目。
docker-compose.yml 文件内容:
version: '2'services: mysql: build: ./docker/builds/mysql ports: - "3386:3306" volumes: - "./docker/data/mysql/data:/var/lib/mysql" - "./docker/data/mysql/conf:/etc/mysql/conf.d" restart: always environment: MYSQL_DATABASE: testdb MYSQL_USER: kinginblue MYSQL_PASSWORD: kinginblue MYSQL_ROOT_PASSWORD: kinginblue api: depends_on: - mysql build: ./docker/builds/api ports: - "8088:8080" volumes: - "./api/target/api-0.0.1-SNAPSHOT.jar:/app/api.jar" entrypoint: - "java" - "-jar" - "/app/api.jar" restart: always
然而,docker-compose build
和 docker-compose up -d
启动之后,docker-compose logs -f api
查看日志,发现错误提示如下:
Error: Invalid or corrupt jarfile /app/api.jar
提示 Jar 包无效或损坏。
一、解决方案
经查,并不是 Jar 包无效或损坏。而是 Windows 的锅。同样的 jar 包同样的 docker-compose.yml 在服务器上的 CentOS 下是没有问题的!
因为我的项目是在 D:\IdeaWorkspace\
下,是 Windows volumes 挂载出了问题!
虽然我的是 Windows8.1 的 Docker Toolbox,经测,Docker for Mac 也会出现同样的问题!
Docker Compose Get started Tip > Shared folders, volumes, and bind mounts 一节有提到:Docker Engine 会自动挂载用户目录 C:\Users (Windows) or /Users (Mac)。
然而,自己手动挂载非用户目录下的文件,就会出现这种问题!Windows 和 Mac 会出问题,CentOS 不会。
解决方法就是不深究了:以前项目都放 D 盘,现在要用 Docker 跑的都放 C 盘的用户目录下了,真是专治各种不服。
我另外一篇博客,也是讲的类似的问题,Windows 下的 Docker 挂载 Mysql 配置文件导致 Mysql 配置文件不生效的问题:Docker mysql [Warning] World-writable config file ‘.cnf’ is is ignored
附、参考资料
- Docker Compose Get started Tip > Shared folders, volumes, and bind mounts
- Docker Error Invalid or corrupt jarfile .jar
- java -jar xxx.jar命令执行jar包时出现Error: Invalid or corrupt jarfile xxx.jar解决方案
- java打包异常2:Invalid or corrupt jarfile test.jar
- 执行jar包时出现invalid or corrupt jarfile
- linux : Invalid or corrupt jarfile
- 打包成jar文件后运行出现Invalid or corrupt jarfile
- jar中没有主清单属性或Invalid or corrupt jarfile解决方案
- 打包成jar文件后运行出现Invalid or corrupt jarfile 解决
- java项目打包成jar文件,在linux上执行出现 Invalid or corrupt jarfile XXXX.jar 错误
- fatal error LNK1136: invalid or corrupt file
- 【matlab】libtest2.dll : fatal error LNK1136: invalid or corrupt file
- VS2010 error: LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
- VS2010 error: LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
- VS2010 error: LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
- Error 'LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt' after
- Error: Unable to access jarfile ApacheJMeter.jar
- 关于ACE.DLL : fatal error LNK1136: invalid or corrupt file问题的解决
- VC98/LIB/libmx.lib : fatal error LNK1136: invalid or corrupt file 解决
- Servlet 学习笔记
- 关于“java中静态内部类的设计意图”的理解
- 树莓派3 基于Ubuntu mate 16.04的调用中文输入法
- jQuery动态创建html元素的常用方法汇总
- 输入一个正整数,输出如下图形
- Docker Error Invalid or corrupt jarfile .jar
- Openstack之控制节点系统及环境安装
- 使用Java创建JSON数据
- unix环境IPC通信之消息队列,并使用多进程的实例
- CSS浮动
- 基于Unity UGUI RawImage的网络头像功能实现方案
- 移位操作
- MYSQL 自定义函数(if else)
- 移动Web开发基础-meta锦集