.Net核心API在docker下运行

.Net核心API在docker下运行,docker,file-upload,.net-core,docker-compose,create-directory,Docker,File Upload,.net Core,Docker Compose,Create Directory,我有一个project.Net核心API,它在Docker for windows下运行,并提供客户可以上传文件的服务 我想将这些文件保存在服务器上,例如C:\TempFolder,但当我使用docker以调试模式运行project并从代码中动态创建目录时,出现错误:“System.IO.IOException:无效参数…” CurrentDirectory为/app,DirectoryInfo完整路径中的值为/app/C:\TempFolder 当我在没有docker的情况下运行应用程序时,它

我有一个project.Net核心API,它在Docker for windows下运行,并提供客户可以上传文件的服务

我想将这些文件保存在服务器上,例如C:\TempFolder,但当我使用docker以调试模式运行project并从代码中动态创建目录时,出现错误:“System.IO.IOException:无效参数…”

CurrentDirectory为/app,DirectoryInfo完整路径中的值为/app/C:\TempFolder

当我在没有docker的情况下运行应用程序时,它工作正常

这听起来可能很糟糕,但我不得不问:

是否可以在我有权限的地方创建目录,例如在docker下运行时在本地PC或服务器上

这是我使用docker的第一个项目,所以…

您可以在启动docker容器时用作参数,或者在使用它时使用卷

docker volume create my-vol

docker run -d --name devtest --mount source=my-vol,target=/app
或使用docker-compose.yml映射docker卷:

    volumes: 
        - my-volume:/app
    volumes: 
        - ./temp-dir:/app
或映射到相对于docker-compose.yml的目录:

    volumes: 
        - my-volume:/app
    volumes: 
        - ./temp-dir:/app
请记住,容器内的代码不知道某个文件夹映射到容器外部的存储

从主机角度看,映射到docker卷和映射到相对路径的主要区别在于docker将决定该卷在主机中的存储位置以及谁可以访问该卷,而相对路径是您控制的目录


使用相对路径时要注意的另一点是,确保您对目录设置了权限,以便docker进程可以使用它。

谢谢,但不起作用。。。我从powershell创建了卷myvolume,然后在docker-compose.yml服务中使用了此代码:nameHere映像:ImageNameHere卷:-myvolume:/app-./temp dir:/app构建:上下文:。dockerfile:文件夹/Dockerfilevolumes:-myvolume:/app应该足够了。我举了两个例子,说明了将host dir映射到容器的不同方法。我很抱歉没有说清楚。