aspnet core web docker compose 环境中的 FileNotFoundException

FileNotFoundException in aspnet core web docker compose environment

我正在努力 docker 化我的 aspnet 核心身份服务器 Web 应用程序。我已经测试了来自 docker 容器的 运行ning 应用程序并且它有效。

$ docker run -d ^
-e "KeyFilePath"="/app/certs/authFile.cer" ^
-p 5000:5000 ^
-v e:/certs:/app/certs/ ^
--name identity ^
identity:0.1-docker

现在,我在我的 docker-compose.yml 中连接它,我的应用程序无法找到在 /app/certs/[=49 指定的文件=].这是我的 docker-身份服务器

的组成部分
services:
  identity:
    image: identity.api:${PLATFORM:-linux}-${TAG:-latest}
    build:
      context: .
      dockerfile: Identity/Dockerfile
    depends_on:
      - sqlserver
    ports:
      - 5000:5000
    volumes:
      - "e:/certs:/app/certs"
    environment:
      - KeyFilePath="/app/certs/authFile.cer"

我已经对此进行故障排除已有一段时间了。当 运行ning 使用 docker 运行-v 时,音量映射顺利,但无法从 docker-compose up identity 实现相同

使用 docker exec -it <container-id> sh ,我可以看到所需目录中的文件存在。不过,我的应用无法访问该文件。

在代码中,只需使用 File.Exists(keyFilePath) which

检查是否存在
  • returns true 当容器通过 docker run 命令启动时。
  • returns false 当开始使用 docker-compose up identity 时。即使文件存在,检查日志也会显示 File.Exists ["/app/certs/authFile.cer"] => False.

知道这个奇怪问题的根本原因吗?

我运行宁

  1. Aspnet 核心 2.1 网络应用程序
  2. Docker 桌面版:Docker version 20.10.2, build 2291f61
  3. Docker 撰写版本:docker-compose version 1.27.4, build 40524192

提前感谢您的帮助

你试过改变吗

来自

environment:
  - KeyFilePath="/app/certs/authFile.cer"

environment:
  - KeyFilePath=/app/certs/authFile.cer