【问题标题】:Docker and ARM64 - Could not load file or assemblyDocker 和 ARM64 - 无法加载文件或程序集
【发布时间】:2021-01-25 09:32:54
【问题描述】:

我的 net core 5 API 项目在运行 Armbian 的 ARM64 SBC 上构建和运行完美。 我试图让它在 Docker 容器中运行但收到错误 '无法加载文件或程序集'/MyAPI.dll'。该系统找不到指定的文件。我认为它必须与路径相关,但看不到 Dockerfile 有任何明显错误

Dockerfile

# Get Base Image (Full .NET Core SDK)
FROM mcr.microsoft.com/dotnet/sdk AS build-env
WORKDIR /app

# Copy csproj and restore
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Generate runtime image
FROM mcr.microsoft.com/dotnet/aspnet
COPY --from=build-env /app/out/ .
ENTRYPOINT ["dotnet", "MyAPI.dll"]

【问题讨论】:

    标签: c# docker .net-core


    【解决方案1】:

    我看到可能是因为这个

    RUN dotnet publish -c Release -o out
    

    应该改成

    RUN dotnet publish -c Release -o /app
    

    而入口点只是更改为

    COPY --from=build-env /app .
    ENTRYPOINT ["dotnet", "/app/MyAPI.dll"]
    

    原因是输出文件夹/out,但您的入口点位于根文件夹中,因此会引发异常。

    【讨论】:

    • 现在出现另一个错误 ``` 由于找不到应用程序或未安装兼容的 .NET SDK 而无法执行。可能的原因包括: * 您打算执行 .NET 程序:应用程序“/app/AllValvesAPI.dll”不存在。 * 您打算执行 .NET SDK 命令:找不到任何已安装的 .NET SDK。 ```
    猜你喜欢
    • 2020-08-17
    相关资源
    最近更新 更多