Docker:卷中的文件未在目标中更新

时间:2018-10-19 17:06:37

标签: docker docker-volume

我是Docker的新手,并且已经使用此Dockerfile创建了一个映像:

FROM node:8.12.0
LABEL version="1.0"
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["node", "index.js"]

我运行图像并且它可以工作。但是,如果在主机目录中更新index.js时使用WORKDIR运行图像映射主机目录,则此更新不会传播到WORKDIR中。

我使用以下命令运行图像:

docker run --name basketmetrics -v /home/josecarlos/Workspace/nodejs/basketmetrics2:/usr/src/app -p 8080:8080 -d basketmetrics2/node-app:1.0

这是我的主机目录/ home / josecarlos / Workspace / nodejs / basketmetrics2

enter image description here

这是容器/ usr / src / app中的目标目录。如果检查容器,可以看到主机目录已与WORKDIR映射

enter image description here

我在做什么错?

更新我:

我已停止容器并在主机目录中修改了文件index.js。如果我再次运行该图像,则可以看到内容已更新!!!

为什么我的内容没有即时更新?

1 个答案:

答案 0 :(得分:3)

看起来像已知问题。 Link

  

如果使用的是诸如vim之类的编辑器,则在保存文件时会   不直接保存文件,而是创建一个新文件并复制它   到位。这会中断基于inode的绑定安装。以来   保存文件有效地更改了索引节点,更改不会   传播到容器中。重新启动容器后,新的   索引节点。如果您在适当位置编辑文件,则应该看到更改正在传播。

     

这是文件安装的已知限制,无法修复。

进一步的注释中,您可以找到针对各种编辑器的一些解决方法。检查是否有效果