2015-01-02 168 views
0

我在試圖創建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實際上需要一段時間,因爲它會安裝標準軟件包以及您添加的依賴項。這是唯一的方法?

回答

2

據我所知,您需要將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監視更改源目錄和重建圖像。

+0

@Thanks Gunter。看到更多的信息,我澄清了一些觀點。 –

+0

如果你做得正確,'pub get'的速度很快,因爲Docker會緩存它。你使用boot2docker還是不使用?你使用哪個主機操作系統? –

+0

boot2docker on windows –