.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 进程可以使用它。
我有一个项目 (.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 进程可以使用它。