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映像。