【问题标题】:Docker node express volume changes in the host not reflected in the containerDocker 节点表示主机中的卷更改未反映在容器中
【发布时间】:2016-09-26 19:59:49
【问题描述】:

我在主机中创建了一个简单的快速应用程序,并使用卷挂载到正在运行的容器:

docker run -d -p 80:8080 -v $(pwd):/www -w "/www" node

当我在主机中更改代码并刷新网页时,更改未反映在浏览器中。

我做错了什么?

【问题讨论】:

  • 您使用的是什么版本和风格(docker machine、docker for mac、docker for windows、native docker on linux)?您使用的是什么 IDE/编辑器?
  • docker-machine 版本 0.6.0,构建 e27fb87,docker for mac 和 Atom
  • docker-machine 0.6.0 是从 2 月开始的,您可以尝试通过 Docker Toolbox 升级到最新版本(0.8.1 - 2016 年 8 月)。如果您同时拥有 docker-machine 和 docker for mac,请务必检查您在 shell 会话中使用的操作,以便使用预期的操作。 env | grep -i docker...如果你看到 DOCKER_HOST 定义它应该使用 docker-machine。
  • 你能解决这个问题吗?我正在重新启动我的容器,一开始我运行“节点。”,如果代码只是被覆盖,它不会识别更改,只有当我删除重新启动复制新重新启动

标签: node.js express docker


【解决方案1】:

每次修改文件都需要重启节点进程才能生效,你的卷挂载是正确的。

执行这个进入你的容器:

docker exec -ti <your-container-name> /bin/bash

然后导航到您的文件 (cd /www) - 您应该会看到文件更改反映在容器内。

考虑在容器内部使用像 forever.js 这样的库,以便在代码更改时自动刷新服务器。

This question 有助于探索 forever.js 选项)

【讨论】:

  • 我按照你的建议做了,我看到了文件中的变化,但这并没有反映在浏览器中,顺便说一下,我正在使用 nodemon
  • 很好,所以卷挂载工作正常 - 但浏览器没有反映更改。你确定 nodemon 正在重启你的 express 进程吗?
  • 我处于附加模式,当我更改代码时,容器中似乎没有任何反应。 (就像没有交流一样)
  • 但是当您更改代码时,容器内的文件会反映这些更改吗?这对我来说听起来像是一个 nodemon 问题
  • 但我只更改模板文件,不需要重新启动服务器。当我在本地主机中运行相同的东西时,即使没有 nodemon 也可以正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2020-09-11
  • 2021-12-17
  • 1970-01-01
相关资源
最近更新 更多