为什么 docker 工作目录不受影响
Why docker working directory isn't affected
如你所见,我有一个名为 node-web-app
的目录,我有两个目录
- 第二个叫
workdir
- 第一个名为
app
的包含 nodejs 代码,我想 docker 对其进行处理
这是我的Dockerfile
FROM node:10
WORKDIR /d/project/node-web-app/workdir
COPY package.json ./
COPY yarn.lock ./
RUN yarn
COPY . .
EXPOSE 8080
CMD [ "yarn", "start" ]
据我了解此命令COPY
RUN
CMD
将在指定的工作目录中执行
(在我的例子中,名为 workdir
的工作目录是 node-web-app
中的第二个目录,它的路径是 /d/project/node-web-app/workdir
)
当我从 Dockerfile
构建映像时,构建成功完成,之后我检查了指定的工作目录 (/d/project/node-web-app/workdir
)。 问题是它没有 app
应该使用 COPY
命令复制的文件。
我的问题是这个问题:docker中的错误还是我对WORKDIR
命令的理解有误?
你的 docker 文件一切正常
您需要检查 docker 容器
首先运行容器
docker run -it -d --name test yourImage
现在访问 docker 容器
docker exec -it test bash
现在我们进入docker容器查看当前目录下的工程文件
ls
您将看到您的项目文件
尝试下面这个应该可以工作,因为它位于 d: 驱动器:
WORKDIR D:\project\node-web-app\workdir
如你所见,我有一个名为 node-web-app
的目录,我有两个目录
- 第二个叫
workdir
- 第一个名为
app
的包含 nodejs 代码,我想 docker 对其进行处理
这是我的Dockerfile
FROM node:10
WORKDIR /d/project/node-web-app/workdir
COPY package.json ./
COPY yarn.lock ./
RUN yarn
COPY . .
EXPOSE 8080
CMD [ "yarn", "start" ]
据我了解此命令COPY
RUN
CMD
将在指定的工作目录中执行
(在我的例子中,名为 workdir
的工作目录是 node-web-app
中的第二个目录,它的路径是 /d/project/node-web-app/workdir
)
当我从 Dockerfile
构建映像时,构建成功完成,之后我检查了指定的工作目录 (/d/project/node-web-app/workdir
)。 问题是它没有 app
应该使用 COPY
命令复制的文件。
我的问题是这个问题:docker中的错误还是我对WORKDIR
命令的理解有误?
你的 docker 文件一切正常 您需要检查 docker 容器
首先运行容器
docker run -it -d --name test yourImage
现在访问 docker 容器
docker exec -it test bash
现在我们进入docker容器查看当前目录下的工程文件
ls
您将看到您的项目文件
尝试下面这个应该可以工作,因为它位于 d: 驱动器:
WORKDIR D:\project\node-web-app\workdir