在OSX上使用Docker进行前端开发并将ENV从主机传递到容器的最佳实践是什么



我正在寻找使用docker在OSX上进行前端开发的最佳实践,我在github上找到了许多项目。它们在这里:

  • docker osx dev
  • boot2docker xyve
  • coreos xyve
  • 码头工人联合
  • hodor

事实上,我需要通过挂载(同步)文件夹将文件从主机系统双向同步到虚拟容器,反之亦然,IO性能应该像本机一样。因此,我不考虑像vboxsf和vmhgfs这样的共享文件夹FS。此外,还需要一些构建工具(gulp等),以便在共享文件夹中使用wathcer。你觉得xyve(使用NFS)而不是VirtualBox怎么样?谁尝试了这种一致性,表演码头工人提供了什么?

最后我有一个特殊的任务,如果可能的话,我想通过nodejs通过主机到容器ENV运行app.js。换句话说,我必须将PATH的ENV变量添加到我的~/.bash_profile中的nodejs(在虚拟容器中)。是否有机会从主机到容器传递NODE_PATH?谢谢

不确定"最佳实践"是否是征求意见(这违反了SO政策),请注意,这在很大程度上也取决于您的工具链。

我不喜欢boot2docker,因为它迄今为止一直有效(尽管它可能会有所改进,从长远来看可能是最好的方法,因为它是docker团队维护的官方方法)。

EDIT:boot2docker已停产,取而代之的是Docker Machine,它做了几乎相同的事情,但以一种更通用的方式,允许您在本地、LAN或云中管理Docker守护进程。

对我来说,我在Windows上,但我面临着与OSX开发人员相同(甚至更多)的困难。由于我正在使用Hyper-V,boot2docker(VirtualBox)无法运行,所以我必须自己滚动。此外,上次我尝试boot2docker时,它运行的是TinyCoreLinux,这是我必须学习的另一个Linux发行版,而我的重点是云中的CoreOS,所以我宁愿只关注CoreOS。

设置开发的目标如下:

  • 拥有对docker主机的ssh访问权限(在VM或LAN中):对我来说,这是Hyper-V上的CoreOS
  • 有一个本地docker客户&export DOCKER_HOST=<ip or hostname here>
  • mount /mnt/from/host工作目录到您的docker主机中进行实时重新加载:这是通过CoreOS上的mount.cifs实现的,我有一个systemd单元
  • 根据您的开发需求制作dev.Dockerfile,如果您是节点开发人员,请从节点映像开始,npm install-gulp/browserify/。。无论你需要什么作为你的项目的基础形象&docker build -f dev.Dockerfile -t my_dev_container .
  • docker run -it -v /mnt/from/host/:/src/app/ -e my_dev_container

您现在处于一个具有完全隔离环境的终端中,该环境可以置于源代码管理&在项目成员之间复制,并具有完整的实时重新加载能力。

回调:如果您依赖于IDE中的REPL或intelliSense,则必须有一个可以使用远程服务器的IDE。或者您必须在dev容器中运行IDE(cloud9或使用X服务器)。

当然,如果你住在航站楼,并且能流利地使用vim,你就可以去了。

最新更新