【问题标题】:FileNotFoundException in aspnet core web docker compose environmentaspnet core web docker compose环境中的FileNotFoundException
【发布时间】:2021-05-16 23:27:38
【问题描述】:

我正在对我的 aspnet 核心身份服务器 Web 应用程序进行 docker 化。我已经测试了从 docker 容器运行的应用程序并且它可以工作。

$ 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/ 中指定的文件。这是我的身份服务器的 docker-compose 部分

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"

我已经解决这个问题已经有一段时间了。使用 docker run-v 运行时,卷被平滑映射,但无法从 docker-compose up identity 实现相同的效果

使用 docker exec -it <container-id> sh ,我可以看到文件存在于所需目录中。尽管如此,我的应用还是无法访问该文件。

在代码中,只需使用File.Exists(keyFilePath) which 来检查是否存在

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

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

我在跑步

  1. Aspnet Core 2.1 Web 应用程序
  2. Docker 桌面版:Docker version 20.10.2, build 2291f61
  3. Docker Compose 版本:docker-compose version 1.27.4, build 40524192

提前感谢您的帮助

【问题讨论】:

    标签: docker asp.net-core docker-compose docker-volume


    【解决方案1】:

    你有没有尝试改变

    来自

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

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

    【讨论】:

    • 这绝对是我搞砸的地方。我已与docker-compose up 核对过,问题已解决。非常感谢。就一件事。为什么通过docker run 也能实现同样的效果,而docker-compose 却失败了?
    • 基本上就是ymal文件语法和控制台语法。 KeyFilePath="/app/certs/authFile.cer" 等于 -e "KeyFilePath"="\"/app/certs/authFile.cer\"" 这就是你得到错误环境的原因。
    猜你喜欢
    • 2019-05-25
    • 2019-03-31
    • 2018-05-08
    • 2015-06-17
    • 1970-01-01
    • 2017-07-27
    • 2021-09-30
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多