相关疑难解决方法(0)

使用Docker在OS X上设置开发环境的正确方法是什么?

介绍

我无法找到使用Docker和Boot2Docker在OS X上设置开发环境的好方法.我遇到的问题是如何管理源代码,以便:

  1. 我可以使用我已安装的工具(文本编辑器,IDE,git等)修改OS X上的代码.
  2. 这些修改反映在Docker容器中,因此如果我重新运行测试或刷新网页,我可以立即看到我的更改.

理论上,通过将我的源代码作为卷安装,这应该很容易做到:

docker run -it -v /path/to/my/source/code:/src some-docker-image
Run Code Online (Sandbox Code Playgroud)

不幸的是,这有两个主要问题使它在OS X上完全无法使用:

问题#1:Virtual Box上安装的卷(使用vboxsf)非常慢

例如,如果源代码是Docker镜像的一部分,这里是Jekyll编译我的主页需要多长时间:

> docker run -it brikis98/yevgeniy-brikman-homepage:v1 bash

root@7aaea30d98a1:/src# time bundle exec jekyll build

[...]

real    0m7.879s
user    0m7.360s
sys     0m0.600s
Run Code Online (Sandbox Code Playgroud)

这是完全相同的Docker镜像,除了这次,我从OS X挂载源代码:

> docker run -it -v $(pwd):/src brikis98/yevgeniy-brikman-homepage:v1 bash

root@1521b0b4ce6a:/src# time bundle exec jekyll build

[...]

real    1m14.701s
user    0m9.450s
sys     0m3.410s
Run Code Online (Sandbox Code Playgroud)

问题#2:文件观看被破坏了

SBT,Jekyll和grunt中的默认监视机制使用诸如inotify之类的技术,如果它们在Docker容器中运行并且在OS X中对安装的文件夹进行了更改,则它们不起作用.

我试过的解决方法

我搜索了解决方案(包括SO上的所有解决方案)并尝试了其中一些,但没有找到成功的解决方案:

  1. 将Boot2Docker切换为使用NFS,但速度一样慢.
  2. 我尝试过Vagrant + NFS,这也很慢.
  3. 我尝试了Samba安装,但该文件夹在Docker容器中始终显示为空.
  4. 我试图使用unison文件系统 …

macos development-environment docker boot2docker

93
推荐指数
3
解决办法
2万
查看次数

用NFS进行inotify

我最近使用inotify创建了一个Dropbox系统,用于查看在特定目录中创建的文件.我正在观看的目录是从NFS服务器挂载的,而inotify的行为与我预期的不同.考虑以下场景:在机器A上运行inotify脚本,观察/ some/nfs/dir/also/visible/to/B.

- 使用机器A在/ some/nfs/dir/also/visible/to/B中创建文件,脚本按预期运行.使用机器B执行相同的操作,不会通知脚本有关目录中丢弃的新文件.
- 当在NFS服务器上运行脚本时,从机器A和机器B创建文件时会收到通知.

这是我用来访问inotofy的包中的错误,还是这个预期的行为?

问候,

安德鲁

nfs inotify

57
推荐指数
3
解决办法
4万
查看次数

Vagrant,共享文件夹:利用NFS上的inotify

我们的Symfony2 webapp在开发模式下使用Assetic观察器来重新编译资产.

webapp在Docker容器中运行,该容器在Vagrant VM(Ubuntu 12.04 Precise)中运行.主机是OSX 10.9 Mavericks,它通过NFS(v3)共享与VM共享代码文件夹,代码通过Docker中的主机/客户卷安装在容器中.

由于inotify似乎无法检测到NFSv3上的文件修改,因此观察者在轮询模式下工作,这种模式可能非常慢(检测到修改的时间约为1/2分钟).

我已经读过NFSv4符合inotify,但我没有找到任何好的资源.

有没有办法让NFS/inotify一起工作?

linux symfony vagrant assetic docker

12
推荐指数
2
解决办法
3953
查看次数