You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用IntelliJ构建Quarkus项目Docker镜像时遇COPY失败错误求助

问题原因与解决方案

核心错误原因

Docker执行COPY --chown=1001:root target/*-runner /work/application时失败,本质是构建上下文里找不到target/*-runner文件,常见原因及解决办法如下:

1. 未提前构建Quarkus应用的可执行文件

Quarkus的各类Dockerfile都依赖Maven构建生成的产物:

  • 对于Dockerfile.native/Dockerfile.native.micro:需要先构建出native可执行文件(*-runner)
  • 对于Dockerfile.jvm:需要先构建出fat jar包(*-runner.jar)

直接跳过Maven构建就执行Docker构建的话,target目录是空的或没有对应产物,必然触发COPY失败。

解决办法:
在项目根目录执行对应构建命令:

  • Native镜像:
    ./mvnw clean package -Pnative
    
  • JVM镜像:
    ./mvnw clean package
    

执行完成后,检查target目录是否生成了对应文件(比如your-project-name-1.0.0-SNAPSHOT-runner或your-project-name-1.0.0-SNAPSHOT-runner.jar)。

2. Docker构建上下文路径错误

IntelliJ默认可能将Dockerfile所在的src/main/docker目录设为构建上下文,但target目录在项目根目录,不在这个子目录下,导致Docker daemon无法访问到target里的文件。

解决办法:
在IntelliJ的Docker构建配置中,将**构建上下文(Context)**修改为项目根目录(而非src/main/docker):

  • 打开IntelliJ的Run/Debug Configurations
  • 找到对应的Docker配置项
  • 在"Build context"选项中选择项目根目录路径

3. 构建命令与Dockerfile类型不匹配

如果使用Dockerfile.native,但执行Maven构建时未添加-PnativeProfile,只会生成JVM的jar包,不会生成native runner文件,此时target/*-runner自然不存在。

解决办法:
严格对应Dockerfile类型选择构建命令:

  • 使用Dockerfile.native/Dockerfile.native.micro:必须添加-Pnative参数
  • 使用Dockerfile.jvm:无需额外参数,执行基础构建即可

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 06:17:22