0

我正在寻找有关使用 docker 在 OSX 上进行前端开发的最佳实践,并且我在 github 上找到了许多项目。他们来了:

  • docker-osx-dev
  • boot2docker-xhyve
  • coreos-xhyve
  • 码头工人统一
  • 阿多

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

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

4

1 回答 1

1

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

我不是 boot2docker 的粉丝,因为它迄今为止可以工作(尽管它可能会有所改进,并且从长远来看它可能是最好的方法,因为它是 docker 团队维护的官方方法)。

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

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

设置您的开发的目标如下:

  • 拥有对 docker 主机(在 VM 中或在 LAN 中)的挂载权限的 ssh 访问权限:这对我来说是 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。或者您必须在开发容器(cloud9 或使用 X 服务器)中运行您的 IDE。

当然,如果你住在终端并且精通 vim,那么你很高兴。

于 2015-07-11T05:57:40.343 回答