2017-08-25 60 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