google-app-engine - docker -v 和符号链接(symbolic link)

标签 google-app-engine dart docker boot2docker

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

问题是 dart 的包文件夹位于 /bin/packages真的是一个符号链接(symbolic link)(如果它在 Windows 中称为符号链接(symbolic link))和 docker 或 boot2docker 或任何似乎无法通过它的东西,我得到了

Protocol error, errno = 71

我在 GAE 和 gcloud 中使用过 dart命令以某种方式创建了容器,将文件放入其中并对主机文件中的更改使用react。我不知道他们是否使用了 -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它无法访问这些包,因为它们位于主机符号链接(symbolic link)后面。但是,pub get实际上需要一段时间,因为它安装标准包以及您添加的依赖项。这是唯一的方法吗?

最佳答案

据我所知,您需要将 Windows 文件夹作为共享文件夹添加到 VirtualBox 才能使用 -v 挂载它使用 boot2docker .
gcloud不使用 -v ,它使用这些 Dockerfile 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.htmlgclould监视源目录的更改并重建镜像。

关于google-app-engine - docker -v 和符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27736831/

相关文章:

python - 我怎样才能登录这个页面并阅读它?

flutter - 更新 Flutter 后 StaggeredGridView 不滚动

google-app-engine - 在 appspot.com 上解析 64 位 int 与在本地主机上不同?

google-app-engine - AppEngine 的两个不同的数据存储区配额

android - 为 Android 编译时,iOS 的 dart 代码会被删除吗?

angularjs - 在 Angular Dart 中使用单选按钮时出现问题

docker - docker swarm 中的多个副本

docker - docker 中的 jekyll 站点在本地服务

java - 在单独的 docker 容器上运行的 Spring Boot 和 Angular 应用程序访问相同的端口 443?

python - HttpError : <HttpError 400 when requesting https://www. googleapis.com/bigquery/v2/projects/