关键靠 -f 参数指定自定义 dockerfile,路径需相对于构建上下文(如 . 或 ..),而非 shell 当前目录;-f 可配合 -t 打标签、--build-arg 传参及 --target 用于多阶段构建。

用 docker build 指定自定义 Dockerfile,关键靠 -f 参数。
使用 -f 参数指定 Dockerfile 路径
默认情况下,docker build 会在构建上下文目录中查找名为 Dockerfile 的文件。如果文件名不是标准名称,或不在当前目录,就必须显式指定:
-
docker build -f ./build/Dockerfile.prod .:使用当前目录下build/Dockerfile.prod构建,上下文仍是当前目录(.) -
docker build -f ../configs/Dockerfile.dev -t myapp:dev ..:Dockerfile 在上层目录的configs文件夹里,构建上下文是上层目录(..) -
docker build -f Dockerfile.alpine -t myapp:alpine .:同目录下有多个 Dockerfile,如Dockerfile.alpine,直接用-f指向它
路径必须相对于构建上下文
-f 后面的路径是**相对于构建上下文目录**(即命令末尾那个 . 或 ./path 所指的目录)的,不是相对于当前 shell 工作目录:
- 错误写法:
docker build -f /home/user/myapp/Dockerfile .(绝对路径在上下文中无效) - 正确写法:先确保
Dockerfile在上下文内,比如把Dockerfile放进./src/,再运行docker build -f src/Dockerfile .
常见组合用法
实际构建常搭配镜像命名、标签和构建参数:
docker build -f Dockerfile.test -t myapp:test --build-arg ENV=testing .docker build -f docker/nginx.Dockerfile -t nginx-custom:1.25 .-
docker build -f ci/Dockerfile.builder -t builder:latest --target builder .(配合多阶段构建中的--target)
注意构建上下文范围
-f 只告诉 Docker 哪个文件是构建脚本,但 COPY/ADD 等指令能访问的文件,只限于构建上下文目录及其子目录。即使 Dockerfile 本身在别处,只要它引用了 COPY ./src/ .,那 ./src/ 就必须在上下文内。











