我正在学习Docker。很多次我都看到Dockerfile有WORKDIR命令:
FROM node:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app
EXPOSE 3000
CMD [ “npm”, “start” ]
我不能忽略WORKDIR和Copy,只是有我的Dockerfile在我的项目的根?使用这种方法的缺点是什么?
小心使用vars作为WORKDIR的目标目录名——这样做似乎会导致“不能标准化任何东西”的致命错误。在我看来,还值得指出的是,WORKDIR的行为与mkdir -p <path>相同,即路径的所有元素都是创建的,如果它们还不存在的话。
更新:
我在运行多阶段构建时遇到了变量相关的问题(上面提到过)-现在看来使用变量是可以的-如果它(变量)是“在范围内”,例如在下面,第2个WORKDIR引用失败…
FROM <some image>
ENV varname varval
WORKDIR $varname
FROM <some other image>
WORKDIR $varname
然而,它成功地……
FROM <some image>
ENV varname varval
WORKDIR $varname
FROM <some other image>
ENV varname varval
WORKDIR $varname
.oO(可能在文档里,我错过了)