我在試圖創建Dart服務器的Windows機器上。我用ADD
和我的文件成功地建立和映像,然後運行容器。然而,每次我不想測試我的代碼時,構建映像是件痛苦的事情,所以我認爲使用-v
命令安裝我的文件會更好,因爲它們可以在運行時從我的主機上實時訪問。docker -v和符號鏈接
問題是DART的包在/bin/packages
文件夾是一個真正的符號鏈接(如果在窗口的所謂的符號連接)和泊塢窗或boot2docker或什麼似乎並沒有能去過去,我也得到
Protocol error, errno = 71
我已經使用GAE的dart和gcloud
命令以某種方式創建了容器,將您的文件放在那裏並對您的主機文件中的更改作出反應。我不知道他們是否使用了-v
選項(正如我所嘗試的),或者他們有一些自動生成器,它使用ADD
和您的文件創建了一個新映像,並在任何似乎可以正常工作的情況下運行它。
更多信息
我一直在使用這種Dockerfile,我從google/dart
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
實際上需要一段時間,因爲它會安裝標準軟件包以及您添加的依賴項。這是唯一的方法?
@Thanks Gunter。看到更多的信息,我澄清了一些觀點。 –
如果你做得正確,'pub get'的速度很快,因爲Docker會緩存它。你使用boot2docker還是不使用?你使用哪個主機操作系統? –
boot2docker on windows –