无法加载共享库“libldap-2.4.so.2”或其依赖项之一

Adi*_*Sai 8 .net linux ubuntu directoryservices docker

团队,

尝试在 docker 上运行时出现以下错误。它在 Windows 机器上工作正常-

无法加载共享库“libldap-2.4.so.2”或其依赖项之一。为了帮助诊断加载问题,请考虑设置 LD_DEBUG 环境变量:liblibldap-2.4.so.2: 无法打开共享对象文件: 没有这样的文件或目录

我正在使用 LdapConnection 的 System.DirectoryServices.Protocols 命名空间。尝试在我的 docker 映像中安装 libldap。以下3种方法,但都不起作用。

RUN apt-get update && apt-get install libldap-2.4-2


RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        libldap-2.4-2 \
    && rm -rf /var/lib/apt/lists/*

RUN apk add libldap
Run Code Online (Sandbox Code Playgroud)

这是我的 docker 文件

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        libldap-2.4-2 \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY ["Ldaptest1/Ldaptest1.csproj", "Ldaptest1/"]
RUN dotnet restore "Ldaptest1/Ldaptest1.csproj"
COPY . .
WORKDIR "/src/Ldaptest1"
RUN dotnet build "Ldaptest1.csproj" -c Release -o /app/build

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Ldaptest1.dll"]
Run Code Online (Sandbox Code Playgroud)

我目前正在使用 .NET 6,初始化 LdapConnection 时它会中断以下行 -

var connection = new LdapConnection(ldapDomain)
Run Code Online (Sandbox Code Playgroud)

我已经经历过这个 - https://github.com/dotnet/dotnet-docker/issues/1946。但这没有帮助。

提前致谢

The*_*Joe 6

将安装命令移到最后一个 FROM 之后,这样就可以解决问题。

我必须对 .NET Core 5 映像执行此操作,并且它有效。

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Ldaptest1/Ldaptest1.csproj", "Ldaptest1/"]
RUN dotnet restore "Ldaptest1/Ldaptest1.csproj"
COPY . .
WORKDIR "/src/Ldaptest1"
RUN dotnet build "Ldaptest1.csproj" -c Release -o /app/build

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

FROM base AS final
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        libldap-2.4-2 \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Ldaptest1.dll"]
Run Code Online (Sandbox Code Playgroud)