问题描述
我有一个在 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 (将#修改为@)