node.js – 在开发流程中使用docker

我在OS X上使用boot2docker,克隆了以下repo:

https://github.com/enokd/docker-node-hello

它基本上有一个Dockerfile和一个非常简单的快速应用程序打印你的世界.当我构建和运行映像时,一切都很好,但是当然,如​​果我对我的Mac上的index.js进行任何更改,这些都不会反映在我的运行映像中.我似乎没有找到任何关于我如何设置docker的参考,以便我可以在我的开发环境中运行它,以自动获取我的源代码更改,所以我觉得我是“做错了”.有什么建议么?

以下是我目前正在运行的方式(我不使用Vagrant,不太确定是否有任何区别):

$docker build -t gasi/centos-node-hello .
$docker run -p 49160:8080 -d gasi/centos-node-hello
$curl localhost:49160

更新:添加了一个答案,我最后做了什么.

更新:使用boot2docker 1.3添加更多当前答案,

最佳答案
您的问题非常有趣,(部分)与Docker无关.
让我说这里的主要和最后一个问题是使用虚拟机.

使用虚拟机(裸虚拟机VM,Vagrant VM,Docker boot2docker VM …)时,跟踪主机上的代码更改可能是一个挑战,

虚拟机是您的Mac(您的代码更改发生)和应用程序堆栈(此处,运行在小型Linux VM上的Docker容器)之间的完整抽象层.

>您必须在Virtualbox中,在Mac和boot2docker之间显式定义共享文件夹(NFS,…).该共享文件夹将是您的代码存储库的根.这是第一步.

Mac:/ Users / You / stuff / approot ===> boot2docker:/ something

>然后,您必须告诉Docker容器使用一个绑定到boot2docker的卷(docker术语),并将Docker应用程序指向它:

   docker run -v /something:/app/path/inside/docker -p 49160:8080 \
     -d gasi/centos-node-hello /usr/bin/node /app/path/inside/docker/index.js

NodeJ检测文件变化是另一个挑战.您需要一个额外的包装器来观看文件系统,并在代码更改时重新启动Node(Forever,Nodemon …).
>然后,由于更改不会发生在本地文件系统上,而是在共享文件夹上,您可能必须告诉Nodejs监视器(Forever / Nodemon / …)使用轮询模式.它工作(或多或少),但会燃烧很多CPU.

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...