在 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 将根据您在执行构建命令时所拥有的内容构建一个映像。如果你想让它显示差异,你需要:
- 构建镜像并重新启动容器;
- 使用一些 docker 容器管理,例如 docker-compose(swarm、kubernetes...)并重新启动容器,以便在容器内更新更改。
运行 容器不会反映您的更改,因为其中的图像是不可变的。
好吧,我猜这不是真正的解决方案,但我意识到这是 windows 的问题。显然 windows 执行的卷网络并不完美。我安装了 Linux,克隆了存储库,它完全按预期工作!
如果有人找到 Windows 用户的解决方法,请告诉我。
我正在尝试构建一个非常基本的容器,其中容器中的工作目录引用本地磁盘 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 将根据您在执行构建命令时所拥有的内容构建一个映像。如果你想让它显示差异,你需要:
- 构建镜像并重新启动容器;
- 使用一些 docker 容器管理,例如 docker-compose(swarm、kubernetes...)并重新启动容器,以便在容器内更新更改。
运行 容器不会反映您的更改,因为其中的图像是不可变的。
好吧,我猜这不是真正的解决方案,但我意识到这是 windows 的问题。显然 windows 执行的卷网络并不完美。我安装了 Linux,克隆了存储库,它完全按预期工作! 如果有人找到 Windows 用户的解决方法,请告诉我。