Author:赵志乾
Date:2024-07-31
Declaration:All Right Reserved!!!
1. 简介
WORKDIR在Dockerfile中用于设置其后续RUN、COPY、ADD、CMD、ENTRYPOINT的工作目录 ,若WORKDIR指定的目录不存在,则Docker会自动创建;
2. 语法
WORKDIR /path/workdir
/path/workdir即为设置的工作目录路径;在Dockerfile内,可以通过多次使用WORKDIR来更改工作目录,RUN、COPY、ADD、CMD、ENTRYPOINT的每次执行都会相对于上一次工作设置的工作目录来解析新的路径;(若是未使用WORKDIR,则相对于镜像的根目录解析新路径);如下:
# 使用官方Python运行时作为父镜像
FROM python:3.8-slim
# 设置第一个工作目录
WORKDIR /usr/src/app
# 将当前目录下的文件复制到容器中的/usr/src/app
COPY . .
# 更改工作目录到/usr/src/app/scripts
WORKDIR /usr/src/app/scripts
# 在新的工作目录中运行脚本
RUN python setup.py install
# 再次更改工作目录(假设这是必要的)
WORKDIR /data
# 运行一个命令,它将在/data目录下执行
CMD ["echo", "This is in /data"]
3. 注意事项
- WORKDIR改变工作目录后,在其后的指令中便无需指定完整路径,从而让Dockerfile变得更清晰、易于理解;
- 若需要在不同的层使用不同的工作目录,则可以多次使用WORKDIR;
- WORKDIR创建的目录是容器内的目录,与宿主机上的目录没有直接关系;
- WORKDIR不会影响容器启动后用户通过docker exec命令进入容器时的默认工作目录;
- 为避免出错,推荐使用绝对路径来指定WORKDIR;