在 docker 中使用卷时出现意外行为

Unexpected behaviour while using volumes in docker

我正在尝试构建一个非常基本的容器,其中容器中的工作目录引用本地磁盘 D 中我的其他目录之一。

我的Docker文件

FROM node:alpine

WORKDIR '/app'

COPY package.json .
RUN npm install 

COPY . .

CMD ["npm", "run", "start"]

我的Docker运行命令

docker run -it -p 3000:3000 -v /app/node_modules -v $(pwd):/app 9ffefb96a4e2

如图所示,我正在将容器中的“app”目录映射到我当前的工作目录。容器构建和 运行s 正确但是当我稍微更改前端并刷新 URL 时,我在网页中看不到任何变化。但是,当我再次重建容器并 运行 它时,我看到合并了更改,它不应该在不重建的情况下自动在网页中进行更改吗?

实际上 docker 将根据您在执行构建命令时所拥有的内容构建一个映像。如果你想让它显示差异,你需要:

  1. 构建镜像并重新启动容器;
  2. 使用一些 docker 容器管理,例如 docker-compose(swarm、kubernetes...)并重新启动容器,以便在容器内更新更改。

运行 容器不会反映您的更改,因为其中的图像是不可变的。

好吧,我猜这不是真正的解决方案,但我意识到这是 windows 的问题。显然 windows 执行的卷网络并不完美。我安装了 Linux,克隆了存储库,它完全按预期工作! 如果有人找到 Windows 用户的解决方法,请告诉我。