Docker运行错误:“由于找不到指定的命令或文件而无法执行”

我正在使用docker构建和运行两项服务,一个是.net核心网站,另一个是.net核心处理器。我已经建立网站并正常运行。但是,当我尝试运行处理器时,出现以下错误消息:

  

由于找不到指定的命令或文件而无法执行。可能的原因包括:

     
      
  • 您拼错了内置的dotnet命令。

  •   
  • 您打算执行.NET Core程序,但dotnet-chores.processor.dll不存在。

  •   
  • 您打算运行全局工具,但在PATH上找不到具有此名称的点缀网络的可执行文件。

  •   
  • 我的网站正在运行,除了dll名称之外,具有相同的Dockerfile。
  • 我已经手动运行dotnet build和publish命令,它们运行成功。
  • 我已验证dotnet publish命令生成了一个名为“ chores.processor.dll”的dll(大小写相同)

我的处理器dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.0.100 AS build
COPY /src /all/src

WORKDIR /all/src
RUN dotnet build -c Release -o /app
RUN dotnet publish --no-restore -c Release -o /app

# FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
WORKDIR /app
# COPY --from=build /app .
EXPOSE 80
ENTRYPOINT ["dotnet","chores.processor.dll"]

处理器csproj:

<Project Sdk="microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <RootNamespace>Chores.Processor</RootNamespace>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Dapper" Version="2.0.30" />
        <PackageReference Include="MySqlConnector" Version="0.59.2" />
    </ItemGroup>
</Project>

网站csproj:

<Project Sdk="microsoft.NET.Sdk.Web">
    <PropertyGroup>
        <TargetFramework>netcoreapp3.0</TargetFramework>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Dapper" Version="2.0.30" />
        <PackageReference Include="MySqlConnector" Version="0.59.2" />
    </ItemGroup>
</Project>

对于我来说,错误消息似乎正在寻找dotnet-chores.processor.dll似乎很奇怪;为什么以“ dotnet-”为前缀?

如果有人对我可以做些什么做进一步调试的建议,我将不胜感激。

linwanping 回答:Docker运行错误:“由于找不到指定的命令或文件而无法执行”

无法找到 chores.processor.dll,因为正确的名称是 Chores.Processor.dll - Linux 区分大小写。所以:

入口点 ["dotnet","Chores.Processor.dll"]

CMD dotnet ./Chores.Processor.dll

该错误消息具有误导性,因为它添加了一个破折号。

本文链接:https://www.f2er.com/3115941.html

大家都在问