📅  最后修改于: 2023-12-03 15:14:46.260000             🧑  作者: Mango
在Docker中,WORKDIR指令用于设置Docker容器中的工作目录。工作目录是在容器中执行命令时的默认位置。通过使用WORKDIR指令,我们可以设置容器中的工作目录,以便更轻松地管理文件和目录。
WORKDIR指令的使用方式如下:
WORKDIR /path/to/directory
上述代码将在容器中创建一个新的工作目录,并将其设置为/path/to/directory
。
可以使用相对路径和绝对路径来设置工作目录。如果使用相对路径设置工作目录,那么工作目录将相对于上一个WORKDIR指令所设置的目录。
WORKDIR app
上述代码将在上一个WORKDIR指令所设置的目录中创建一个名为app
的子目录,并将其设置为工作目录。
WORKDIR /usr/src/app
上述代码将直接在根目录下创建一个名为/usr/src/app
的目录,并将其设置为工作目录。
在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
命令。
Dockerfile中可以有多个WORKDIR指令,但是只有最后一个WORKDIR指令会被执行。因此,建议在Dockerfile中仅使用一个WORKDIR指令,以免造成混淆。
WORKDIR /app
WORKDIR /tmp
WORKDIR /var/www
上述代码中,只有最后一个WORKDIR /var/www
会生效,并将其设置为工作目录。
使用WORKDIR指令可以带来以下好处:
WORKDIR指令是用于在Docker容器中设置工作目录的指令。它允许我们更轻松地管理文件和目录,并确保在容器的整个生命周期中保持一致。使用WORKDIR指令可以提高Dockerfile的可读性和清晰度,同时简化路径的设置。建议在Dockerfile中仅使用一个WORKDIR指令。