【问题标题】:.Net Core API running under docker.Net Core API 在 docker 下运行
【发布时间】:2018-07-03 09:50:52
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: docker file-upload .net-core docker-compose create-directory


    【解决方案1】:

    您可以在启动 docker 容器时使用 docker volumes 作为参数,或者如果您正在使用它,可以使用卷 defined in docker-compose

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

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

        volumes: 
            - my-volume:/app
    

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

        volumes: 
            - ./temp-dir:/app
    

    请记住,容器内的代码不会知道某些文件夹被映射到容器外部的存储。

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

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

    【讨论】:

    • 谢谢,但不工作...我从 powershell 创建了卷 myvolume,然后在我的 docker-compose.yml 服务中使用了此代码:nameHere image: ImageNameHere volumes: - myvolume:/app - ./临时目录:/应用程序构建:上下文:。 dockerfile:文件夹/Dockerfile
    • volumes: - myvolume:/app 应该足够了。我做了两个例子来说明将主机目录映射到容器的不同方法。没有说清楚是我的错。
    猜你喜欢
    • 2021-10-26
    • 2021-02-05
    • 2021-03-27
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    相关资源
    最近更新 更多