什么是使用Docker进行OS X前端开发和从主机到容器直通ENV的最佳实践

我正在寻找有关Docker开发OSX前端的最佳做法,我发现在github上的项目数量。 他们来了:

  • 搬运工-OSX-dev的
  • boot2docker-xhyve
  • coreos-xhyve
  • 泊坞窗,齐声
  • hodor

事实是,我需要通过挂载(同步)文件夹从主机系统到虚拟容器,反之亦然双向同步文件和IO性能应该像本地一个。 因此,我不认为像vboxsf和vmhgfs共享文件夹FS。 还需要在共享文件夹中使用wathcer的一些构build工具(吞咽等)。 你如何看待xhyve(而不是使用NFS)而不是VirtualBox? 谁尝试了一下,docker工提供的性能是什么?

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

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

我不是boot2docker的粉丝,因为它是迄今为止的工作(尽pipe它可能会改善,从长远来看这可能是最好的方法,因为它是由docker工作组维护的官方方法)。

编辑:boot2docker已经停产,取而代之的是Docker Machine ,它以几乎相同的方式,但以更通用的方式,允许您在本地,局域网或云中pipe理Docker守护进程。

对于我来说,我在Windows上,但是我面对与OSX开发者一样的(甚至更多)困难。 当我使用Hyper-V时,boot2docker(VirtualBox)无法运行,所以我必须自己动手。 另外,上次我尝试了boot2docker,它运行的是TinyCoreLinux,这是另一个我需要学习的Linux发行版,而我的重点是CoreOS,所以我宁愿只关注CoreOS。

设置你的开发目标如下:

  • 使用ssh访问docker主机的挂载权限(无论是在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

您现在处于一个完全隔离的环境中,可以在项目成员之间进行源代码pipe理和复制,并拥有完整的现场重装能力。

退后一步:如果您依赖于IDE中的REPL或智能,则必须有一个可以使用远程服务器的IDE。 或者你必须在开发容器(cloud9或使用X服务器)中运行你的IDE。

当然,如果你住在一个terminal,并stream利vim,你是好的去。

Interesting Posts