运行Docker镜像时提示Illegal option:D错误,求排查代码问题
解决Docker运行时"Illegal option : D"错误
问题根源
你的Dockerfile存在三个关键问题:
- 命令误用:运行Java Jar包需要用
java命令,而非jar命令。jar仅用于Jar文件的打包/解压操作,无法启动Java应用。 - JVM参数格式错误:Spring Profile激活参数缺失
-前缀,正确写法应为-Dspring.profiles.active=local(参数名推荐用复数profiles,单数profile部分场景兼容,但必须带-)。原写法Dspring.profile.active=local会被jar命令识别为非法选项,直接触发"Illegal option : D"错误。 - 路径不匹配:
ADD命令将Jar包复制到了/target/abc-docker,但ENTRYPOINT里引用的是/abc-0.0.1-release.jar,路径不一致会导致启动时找不到Jar文件。
修正后的Dockerfile
FROM openjdk:17 EXPOSE 8181 # 将Jar包复制到容器内规范路径,方便管理 ADD target/abc-0.0.1-release.jar /app/abc-app.jar # 使用java命令正确启动应用,并传递JVM参数 ENTRYPOINT ["java", "-Dspring.profiles.active=local", "-jar", "/app/abc-app.jar"]
关键修正点
- 替换
jar为java,这是启动Java应用的标准命令。 - 给Spring参数添加
-前缀,让JVM识别为系统属性参数。 - 统一Jar包的存储路径与引用路径,避免文件找不到的问题。
内容的提问来源于stack exchange,提问作者Ashutosh Vaishnav
相关产品推荐
相关产品推荐

