docker build -t predict:3.10.17-v1.0 -f ./build/Dockerfile-predict_3.10.17 . 其中. 作用(二)
Docker build 命令中每个 . 的作用详解
在这个命令中出现了两个 .,它们的作用完全不同:
docker build -t predict:3.10.17-v1.0 -f ./build/Dockerfile-predict_3.10.17 .
第一个点:./build/Dockerfile-predict_3.10.17
这个 . 表示当前工作目录,是Linux/Unix系统中的标准用法:
-
./前缀:-
表示从当前目录开始的相对路径
-
确保Dockerfile路径是相对于你执行命令的位置
-
-
具体作用:
-
假设你在
/home/user/project目录下执行命令 -
./build/Dockerfile-predict_3.10.17实际指向/home/user/project/build/Dockerfile-predict_3.10.17
-
-
为什么重要:
-
避免使用绝对路径,使命令更具可移植性
-
确保在不同环境中都能正确找到Dockerfile
-
第二个点:命令最后的 .
这个 . 表示构建上下文(build context):
-
核心作用:
-
指定Docker构建时的工作目录范围
-
所有
COPY或ADD指令的文件都只能来自这个目录及其子目录
-
-
实际行为:
-
Docker客户端会将这个目录下的所有文件(除.dockerignore排除的)发送给Docker守护进程
-
在这个例子中,发送的是当前目录(.)的所有内容
-
-
与-f参数的关系:
-
-f指定的Dockerfile可以不在上下文目录中 -
但Dockerfile中引用的文件必须在上下文目录内
-
实际应用示例
假设项目结构:
/project
/build
Dockerfile-predict_3.10.17
/src
app.py
requirements.txt
当你在 /project 目录执行命令时:
-
./build/Dockerfile-predict_3.10.17解析为/project/build/Dockerfile-predict_3.10.17 -
最后的
.表示/project目录是构建上下文 -
Dockerfile中的
COPY src/app.py /app/能正常工作,因为src在上下文中 -
但
COPY /absolute/path/file.txt /app/会失败,因为绝对路径不在上下文中
为什么这样设计?
-
安全性:防止意外复制系统敏感文件
-
可重现性:确保构建环境一致
-
效率:只传输必要的文件给Docker守护进程
记住:第一个点是指定Dockerfile位置,第二个点是确定哪些文件可用于构建过程。

浙公网安备 33010602011771号