You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker+ASP.NET Core容器启动失败:存在dotnet和DLL却无法加载命令

ASP.NET Core应用docker-compose启动失败排查方案
  • 检查工作目录配置
    docker-compose默认工作目录可能与你手动进入容器时的目录不一致,导致相对路径调用dotnet Daemon.dll失败。在docker-compose.yml的对应service中添加working_dir: /app(替换为容器中Daemon.dll实际所在目录)。

  • 验证ENTRYPOINT/CMD路径正确性
    确保启动命令使用正确的相对或绝对路径:

    • 相对路径写法:["dotnet", "./Daemon.dll"](需配合正确的working_dir)
    • 绝对路径写法:["dotnet", "/app/Daemon.dll"](直接指定dll的完整路径)
      避免因路径模糊导致的文件找不到问题。
  • 排查.NET运行时/SDK版本匹配问题

    • 若提示“未找到.NET SDK”,检查是否在运行阶段误用了Runtime镜像却执行了需要SDK的命令,但你手动执行dotnet Daemon.dll正常,说明运行时是存在的,大概率是docker-compose启动命令的配置问题。
    • 确认构建镜像时使用的SDK版本与运行阶段的Runtime版本一致(比如都用.NET 7.0)。
  • 检查volumes挂载是否覆盖文件
    如果docker-compose中配置了本地目录挂载到容器的应用目录(比如./:/app),可能会覆盖容器中构建好的Daemon.dll文件。去掉不必要的volume挂载,或确保本地挂载目录包含正确的发布文件。

  • 确认docker-compose使用的镜像正确性
    确保docker-compose.yml中指定的image是你本地构建好的镜像(比如your-app-image:latest),而非官方基础镜像。若误用基础镜像,容器内自然没有你的应用文件。

  • 临时调试定位问题
    在docker-compose.yml的service中添加调试命令,查看启动时的环境:

    command: ["sh", "-c", "pwd && ls -la /app && dotnet Daemon.dll"]
    

    通过输出的工作目录和文件列表,直接确认Daemon.dll是否存在于预期路径。

内容的提问来源于stack exchange,提问作者Gabi Barrientos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:50:32