C# Docker绑定装载到环境变量(在ASP.NET核心中)

C# Docker绑定装载到环境变量(在ASP.NET核心中),c#,docker,asp.net-core,docker-compose,C#,Docker,Asp.net Core,Docker Compose,我有两条路。一个用于获取模板,另一个用于生成文档。 在Docker上部署此应用程序工作正常应用程序启动、工作且不发出警告,bind mount在我的本地计算机上创建了这两个目录,但似乎没有使用它们,甚至没有创建它们?在集装箱上 以下是我尝试过的: 1 AppSettings.json中的指定路径这是我在没有Docker的情况下的配置,它将在Docker compose文件中被覆盖 "RootDirectoryForDocuments": { "DocumentsRoot": "Tes

我有两条路。一个用于获取模板,另一个用于生成文档。 在Docker上部署此应用程序工作正常应用程序启动、工作且不发出警告,bind mount在我的本地计算机上创建了这两个目录,但似乎没有使用它们,甚至没有创建它们?在集装箱上

以下是我尝试过的:

1 AppSettings.json中的指定路径这是我在没有Docker的情况下的配置,它将在Docker compose文件中被覆盖

  "RootDirectoryForDocuments": {
    "DocumentsRoot": "TestDocumentsDir",
    "TemplatesRoot": "TestTemplatesDir"
  }
2创建了Docker编写文件。在这里,我首先将路径作为环境变量提供,然后尝试让容器在volumes部分中使用它们:

version: "3.7"
services:
    hraapi: 
        build: ../Hra.Api
        environment:
            - ASPNETCORE_ENVIRONMENT=Development
            - ENV_RootDirectoryForDocuments_DocumentsRoot="/app/GeneratedDocs"
            - ENV_RootDirectoryForDocuments_TemplatesRoot="/app/Templates"

        image: user/hra.api:v1.0
        container_name: hra.api
        ports:
            - "5000:80"
        depends_on:
            - hradb
        volumes:
            - C:/Users/User/Desktop/GeneratedDocs:/app/GeneratedDocs
            - C:/Users/User/Desktop/Templates:/app/Templates
当我运行DockerCompose时,它会自动在我的桌面上创建这两个文件夹。然而,我希望它也能在容器中创建和使用它们。
为了使用已经存在的路径,我尝试了很多ASP.NET核心容器的结构,但都没有成功。

很抱歉,我还不能发表评论,但以下可能是解决容器层次结构问题的方法:

这个码头工人在你的本地机器上工作吗?您可以使用容器的id登录到正在工作的docker容器,并准确地检查文件系统中发生的事情。 首先,获取docker id:

#> docker ps
然后,使用id,它看起来像:ka7859adgfa59

#> docker exec -it ka7859adgfa59 /bin/bash
您可以使用bashshell进入容器内部


volumes:part使用了简短的语法,如果这些文件夹不存在,则应该在其中创建这些文件夹

Thank you@ashantiel。使用docker exec-it hra.api/bin/bash探索容器文件结构真的很有帮助。问题是我使用的是DocumentsRoot\Something之类的路径。C和resharper让我在前后斜杠上乱搞,但在docker compose中,这条路径并没有逃脱。因此,它创建了一个名为DocumentsRoot\Something的文件夹。