📜  Docker – WORKDIR指令(1)

📅  最后修改于: 2023-12-03 15:14:46.260000             🧑  作者: Mango

Docker – WORKDIR指令

在Docker中,WORKDIR指令用于设置Docker容器中的工作目录。工作目录是在容器中执行命令时的默认位置。通过使用WORKDIR指令,我们可以设置容器中的工作目录,以便更轻松地管理文件和目录。

使用方式

WORKDIR指令的使用方式如下:

WORKDIR /path/to/directory

上述代码将在容器中创建一个新的工作目录,并将其设置为/path/to/directory

相对路径和绝对路径

可以使用相对路径和绝对路径来设置工作目录。如果使用相对路径设置工作目录,那么工作目录将相对于上一个WORKDIR指令所设置的目录。

WORKDIR app

上述代码将在上一个WORKDIR指令所设置的目录中创建一个名为app的子目录,并将其设置为工作目录。

WORKDIR /usr/src/app

上述代码将直接在根目录下创建一个名为/usr/src/app的目录,并将其设置为工作目录。

WORKDIR vs RUN cd

在Dockerfile中,通常可以使用RUN cd命令来改变工作目录。然而,这种方法在工作目录改变后并不会持久保存,因为每个RUN命令都会在自己的shell中执行。而使用WORKDIR指令可以确保工作目录在容器的整个生命周期中保持一致。

WORKDIR /app
RUN pwd
RUN cd /tmp && pwd
RUN pwd

上述代码中的pwd命令在第1行和最后一行输出的是/app,而不是在第3行的/tmp。因为cd命令只在第3行的shell中生效,并不会影响到其他RUN命令。

多个WORKDIR指令

Dockerfile中可以有多个WORKDIR指令,但是只有最后一个WORKDIR指令会被执行。因此,建议在Dockerfile中仅使用一个WORKDIR指令,以免造成混淆。

WORKDIR /app
WORKDIR /tmp
WORKDIR /var/www

上述代码中,只有最后一个WORKDIR /var/www会生效,并将其设置为工作目录。

使用WORKDIR指令的好处

使用WORKDIR指令可以带来以下好处:

  1. 更清晰的Dockerfile:通过明确指定工作目录,可以更清晰地了解容器中的命令将在哪个目录中执行。
  2. 可读性更强的命令:Dockerfile中的命令可以使用相对路径,使其更容易理解和维护。
  3. 简化路径:使用WORKDIR指令可以避免在多个命令中重复指定相同的路径。
总结

WORKDIR指令是用于在Docker容器中设置工作目录的指令。它允许我们更轻松地管理文件和目录,并确保在容器的整个生命周期中保持一致。使用WORKDIR指令可以提高Dockerfile的可读性和清晰度,同时简化路径的设置。建议在Dockerfile中仅使用一个WORKDIR指令。