无法在本地 pub-get 之后构建 docker dart-runtime 映像

Cant build a docker dart-runtime image after a local pub-get

我是 docker 的新手,我正在使用 arch 上的 google/dart-runtime 基础映像。

一切正常,除非我在构建图像之前执行 pub get(我需要它来完成 webstorm 代码)然后我必须删除每个 "package" 符号链接才能再次构建我的图像。

如果没有,我会得到这个错误:

sudo docker build -t foo/myapp .
Sending build context to Docker daemon 9.952 MB
Step 1 : FROM google/dart-runtime
# Executing 4 build triggers...
Step 1 : ADD pubspec.* /app/
stat packages/_discoveryapis_commons: no such file or directory

注意:_discoveryapis_commons是列表中的第一个包,我认为这与他没有特别的关系...

如何在容器外执行 pub get 而不会弄乱构建?

我不知道错误的确切原因,但我看到了两个 "workarounds":

  • 使用pub get --no-package-symlinks。这仍然是实验性的,但只要您没有依赖于 packages 符号链接的外部工具,它就可以正常工作。此外,如果没有 packages 目录,test 包仍然无法完全工作。
  • 创建一个 .dockerignore 文件,内容为 packages/*

另一种解决方法是在项目的根目录下创建一个 .dockerignore 文件并在其中写入:

*packages/*