2017-08-25 57 views
1

我在Visual Studio 2017中創建了一個支持Docker的Web項目(我的主機是Windows 10機器)。我的圖像基於Linux。與Visual Studio的Docker卷

我也創建了一個webapi用戶可以上傳圖片。我必須將此圖片存儲在文件系統上。目前,我在做這樣的:

File.WriteAllBytes(path, bytes); // path = /pictures/abc.jpg 

,我可以讀取圖像回這樣的:

byte[] bytes = File.ReadAllBytes(path); 

,一切工作正常。

問題是,圖片存儲在我的容器中,但我想將它存儲在我的主機上(最終,docker圖像將託管在Raspberry Pi上,我必須將圖片存儲在SD卡)。

我認爲解決方案是使用VOLUME。我用這個指令修改了一下,但是沒能看到我主人的照片......我該怎麼做?

解決的辦法是在這個文件

泊塢窗,compose.override.yml

version: '3' 

services: 
    abc: 
    environment: 
     - ASPNETCORE_ENVIRONMENT=Development 
    ports: 
     - "5001:80" 
    volumes: 
     - .:/src 
     - ./pictures:/pictures // <- The pictures folder is created where my docker project is 

回答

1

您需要使用泊塢窗卷。您可以設置在主機體積像下面

docker run -v ~/Desktop/images:/my/images/inside/docker 

確保您的代碼寫入/my/images/inside/docker容器內。這也將它移到主機。

你也可以使用一個名爲卷

docker volume create images 

docker run -v images:/my/images ... 

這將卷將保持甚至死亡容器上的圖像存儲。但是,這不能將其存放在主機上

編輯-1

所以docker-compose.override.yml是你需要使用的東西。更改文件的內容爲

version: '3' 

services: 
    ci-build: 
    volumes: 
     - .:/src 
     - ~/Desktop/images:/images/inside 

這將組合這兩個文件,然後運行它。

+0

訣竅是我正在使用Visual Studio(就像在問題中書寫和標記)。當我開始一個調試會話(F5)時,一切都「神奇地」完成了,所以實際上,我從不做一個'docker run xxx' – Bidou

+0

項目中會有兩個生成的文件,一個與'Dockerfile'相關,一個可能與撰寫有關。你能找到他們並將內容添加到你的問題?查看資源管理器中的文件夾,查看隱藏文件 –

+0

已更新問題 – Bidou