我是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
这是容器/ usr / src / app中的目标目录。如果检查容器,可以看到主机目录已与WORKDIR映射
我在做什么错?
更新我:
我已停止容器并在主机目录中修改了文件index.js。如果我再次运行该图像,则可以看到内容已更新!!!
为什么我的内容没有即时更新?
答案 0 :(得分:3)
看起来像已知问题。 Link
如果使用的是诸如vim之类的编辑器,则在保存文件时会 不直接保存文件,而是创建一个新文件并复制它 到位。这会中断基于inode的绑定安装。以来 保存文件有效地更改了索引节点,更改不会 传播到容器中。重新启动容器后,新的 索引节点。如果您在适当位置编辑文件,则应该看到更改正在传播。
这是文件安装的已知限制,无法修复。
进一步的注释中,您可以找到针对各种编辑器的一些解决方法。检查是否有效果