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

Jos*_*los 5 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"]
Run Code Online (Sandbox Code Playgroud)

我运行该图像并且它有效。但是,如果我在更新主机目录中的 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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

在此输入图像描述

我究竟做错了什么?

更新一:

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

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

Kam*_*ski 9

看起来像是已知问题。关联

如果您使用像 vim 这样的编辑器,当您保存文件时,它不会直接保存文件,而是创建一个新文件并将其复制到位。这会破坏基于 inode 的绑定安装。由于保存文件实际上会更改 inode,因此更改不会传播到容器中。当容器重新启动时,新的索引节点。如果您就地编辑文件,您应该会看到更改传播。

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

在评论中,您还可以找到针对各种编辑器的一些解决方法。检查是否有任何工作