docker -v和符号链接

时间:2015-01-02 02:46:10

标签: google-app-engine dart docker boot2docker

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

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

Protocol error, errno = 71

我已经在GAE中使用了dart,gcloud命令以某种方式创建了容器,将文件放在那里并对主机文件中的更改作出反应。我不知道他们是否使用了-v选项(正如我正在尝试的那样),或者他们有一些自动构建器使用ADD创建了一个包含文件的新图像并运行了它任何似乎都有效的案例。

更多信息

我一直在使用我从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

如您所见,其中大部分已被注释掉,因为我不想ADD使用-v而是pub get。但是,您可以注意到,在此脚本中,他们执行-v两次,并有效地在容器内创建 包。

使用pub get它无法访问这些包,因为它们位于主机符号链接之后。但是,{{1}}实际上需要一段时间才能安装标准软件包以及添加的依赖项。这是唯一的方法吗?

1 个答案:

答案 0 :(得分:2)

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

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