我正在尝试创建Dart服务器的Windows计算机上。我使用ADD
和运行容器的文件成功构建和映像。然而,每次我要测试我的代码时构建一个图像是很痛苦的,所以我认为用-v
命令挂载我的文件会更好,因为它们是从我的主机上实时访问的。运行时。
问题是,/bin/packages
处的dart包文件夹实际上是一个符号链接(如果它在windows中称为符号链接)和docker或boot2docker,或者似乎无法通过它的任何内容我得到了
Protocol error, errno = 71
我已经在GAE中使用了dart,gcloud
命令以某种方式创建了容器,将文件放在那里并对主机文件中的更改作出反应。我不知道他们是否使用了-v
选项(正如我正在尝试的那样),或者他们有一些自动构建器使用ADD
创建了一个包含文件的新图像并运行了它任何似乎都有效的案例。
更多信息
我一直在使用我从google/dart
修改过的DockerfileFROM 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}}实际上需要一段时间才能安装标准软件包以及添加的依赖项。这是唯一的方法吗?
答案 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.html,https://www.dartlang.org/server/google-cloud-platform/app-engine/run.html
gclould
监视源目录以进行更改并重建映像。