.Net Core API 运行 下 docker

.Net Core API running under docker

我有一个项目 (.Net Core API) 在 Docker 下运行 windows 并且提供客户可以上传文件的服务。

我想将这些文件保存在服务器上(例如 "C:\TempFolder"),但是当我 运行 在调试模式下(使用 docker)项目并从那里的代码动态创建目录时是一个错误:'System.IO.IOException: 无效参数..."

CurrentDirectory 是 /app,DirectoryInfo FullPaths 中的值是“/app/C:\TempFolder”

当我 运行 没有 docker 的应用程序时它工作正常

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

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

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

如果你正在使用它,你可以使用 docker volumes as arguments when starting docker container, or have volumes defined in docker-compose

docker volume create my-vol

docker run -d --name devtest --mount source=my-vol,target=/app

或映射 docker 卷使用 docker-compose.yml:

    volumes: 
        - my-volume:/app

或映射到相对于docker-compose.yml的目录:

    volumes: 
        - ./temp-dir:/app

请记住,容器内的代码不知道某个文件夹已映射到容器外部的存储空间。

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

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