无法在 linux 容器上运行的 dotnet2.1 中加载共享库“libdl”

问题描述

我有一个在 Linux 容器 (Debian Stretch) 上运行的 dotnet2.1 api,用于处理图像,因此它引用了 System.Drawing。在 dockerfile 中,我将安装本机依赖项作为最后一步:

RUN apt-get update \
    && apt-get install -y --allow-unauthenticated \
        libc6-dev \
        libgdiplus \
        libx11-dev \
     && rm -rf /var/lib/apt/lists/*

但是在运行时我得到了:

无法加载共享库“libdl”或其依赖项之一

对容器的快速搜索显示库已安装:

find . -name "libdl*"
./lib/x86_64-linux-gnu/libdl-2.24.so
./lib/x86_64-linux-gnu/libdl.so.2

有关如何解决此问题的任何提示

编辑:这是我完整的 dockerfile 内容

FROM docker.io/microsoft/dotnet:2.1.6-aspnetcore-runtime AS base
workdir /app
EXPOSE 80

FROM docker.io/microsoft/dotnet:2.1.500-sdk AS build
workdir /src
copY . .
RUN dotnet restore "SomeProject.Api/SomeProject.Api.csproj"
copY . .
workdir /src/SomeProject.Api
RUN dotnet build "SomeProject.Api.csproj" -c Release -o /app/build
# run tests on docker build
RUN dotnet test

FROM build AS publish
RUN dotnet publish "SomeProject.Api.csproj" -c Release -o /app/publish

FROM base AS final
workdir /app
copY --from=publish /app/publish .

# soft link
RUN ln -s /lib/x86_64-linux-gnu/libdl-2.24.so /lib/x86_64-linux-gnu/libdl.so

# install System.Drawing native dependencies
RUN apt-get update \
    && apt-get install -y --allow-unauthenticated \
        libc6-dev \
        libgdiplus \
        libx11-dev \
     && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["dotnet","SomeProject.Api.dll"]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)