我在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添加更多当前答案,
让我说这里的主要和最后一个问题是使用虚拟机.
使用虚拟机(裸虚拟机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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。