Docker运行和卷澄清

Docker运行和卷澄清,docker,Docker,下面是我的dockerfile,我在copy命令中复制js文件,然后设置工作目录,然后是volume和run命令。下面是我的dockerfile 1) 我知道当容器第一次初始化时,由于在同一位置创建卷,节点_模块(由于运行npm安装而创建)正在获得wipedoff 我的问题是,为什么我在步骤3中复制的app.js没有被删除,因为它也与卷位于同一路径上 FROM node:latest ENV NODE_ENV=production ENV PORT=3000 COPY . /app WORK

下面是我的dockerfile,我在copy命令中复制js文件,然后设置工作目录,然后是volume和run命令。下面是我的dockerfile 1) 我知道当容器第一次初始化时,由于在同一位置创建卷,节点_模块(由于运行npm安装而创建)正在获得wipedoff 我的问题是,为什么我在步骤3中复制的app.js没有被删除,因为它也与卷位于同一路径上

FROM node:latest

ENV NODE_ENV=production
ENV PORT=3000

COPY . /app
WORKDIR /app
VOLUME ["/app"]


RUN npm install

EXPOSE $PORT

ENTRYPOINT ["node","app.js"]

Q:为什么我的app.js(我在步骤3中复制的)没有被删除,而
节点模块
被删除

A:如docker文档卷部分所述

引用:

从Dockerfile中更改卷:

如果有任何构建步骤 声明后更改卷内的数据那些 更改将被放弃。


参考:

可能相关:两个备注:(i)关于卷,在Dockerfile中使用
命令实际上是一种不好的做法,请参见:;最好改用(或
docker compose.yml
文件中的适当选项);(ii)一次性复制所有文件(
COPY./app
)会妨碍Docker的缓存机制;你可以看看完美!我得到了答案