docker -v和符号链接

我正在试图创build一个Dart服务器的Windows机器上。 我用ADD和运行容器成功地构build和映像了我的文件。 然而,每次我不想testing我的代码时,build立一个映像是痛苦的,所以我认为用-v命令挂载我的文件会更好,因为它们是在运行时从我的主机上实时访问的。

问题是,在/bin/packages dart的包文件夹实际上是一个符号链接(如果它在Windows中称为符号链接)和docker或boot2docker或任何似乎不能通过它,我得到

 Protocol error, errno = 71 

我用GAE的dart和gcloud命令以某种方式创build了容器,在那里获取了文件,并对主机文件中的更改作出反应。 我不知道他们是否使用-v选项(正如我尝试),或者他们有一些自动生成器,使用ADD创build一个新的图像与你的文件,并运行它,似乎工作的任何情况。

更多信息

我一直在使用这个从google / dart修改的Dockerfile

 FROM google/dart RUN ln -s /usr/lib/dart /usr/lib/dart/bin/dart-sdk WORKDIR /app # ADD pubspec.* /app/ # RUN pub get # ADD . /app # RUN pub get --offline WORKDIR /app/bin ENTRYPOINT dart CMD server.dart 

正如你所看到的,它的大部分被注释掉了,因为我不想使用-v而不是ADD 。 但是,您可以注意到,在这个脚本中,它们pub get两次,并且有效地在容器中创build了包。

使用-v它无法访问这些包,因为它们在主机符号链接之后 。 但是,实际上pub get需要一段时间,因为它会安装标准软件包和您添加的依赖项。 这是唯一的方法?

据我所知,你需要将Windows文件夹作为共享文件夹添加到VirtualBox,以便能够使用boot2docker使用-v来挂载它。

gcloud不使用-v ,它使用这些Dockerfiles https://github.com/dart-lang/dart_docker
另请参阅https://www.dartlang.org/server/google-cloud-platform/app-engine/setup.html,https://www.dartlang.org/server/google-cloud-platform/app-engine/ run.html
gclould监视源目录中的更改并重build映像。