执行docker build构建Quarkus容器时提示找不到指定Dockerfile如何解决?
问题诊断
- Docker构建命令参数使用错误:
docker build最后一个位置参数默认是构建上下文路径,而非Dockerfile路径。系统默认会在上下文路径下搜索名为Dockerfile的文件执行构建,你直接将native.dockerfile的完整路径作为上下文参数传入,系统会将该路径作为目录遍历,自然触发路径不存在的报错。 - 构建上下文不匹配:你的Dockerfile中使用
COPY target/*-runner /work/application指令,target目录默认存放在Quarkus项目根目录下,若选择Dockerfile所在的src/main/docker作为构建上下文,会无法读取到根目录下的target目录内容,后续构建也会失败。 - 缺少前置构建步骤:IntelliJ执行构建时报错,大概率是你在执行Docker构建前,未提前生成Quarkus原生可执行文件,
target目录下不存在对应的*-runner二进制文件,触发COPY指令执行失败。
解决方案
- 先完成Quarkus原生镜像打包,在项目根目录执行Maven命令:
mvn package -Dnative
- 调整Docker构建命令,在项目根目录执行如下命令:
# -f 参数用于指定自定义路径/名称的Dockerfile,最后的 . 代表使用当前项目根目录作为构建上下文 docker build -f src/main/docker/native.dockerfile . # 若需要给生成的镜像打标签,可添加-t参数,示例: # docker build -f src/main/docker/native.dockerfile -t quarkus-app:v1 .
- IntelliJ构建配置调整:打开Docker运行配置,将「Context folder」字段设置为项目根目录,「Dockerfile」字段指定为
src/main/docker/native.dockerfile,同时在构建前置任务中添加执行mvn package -Dnative的Maven任务即可。
内容的提问来源于stack exchange,提问作者Vitor
相关产品推荐
相关产品推荐

