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

标签 .net linux docker ubuntu directoryservices

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

Unable to load shared library 'libldap-2.4.so.2' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibldap-2.4.so.2: cannot open shared object file: No such file or directory


我正在为 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
这是我的 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"]
我目前正在使用 .NET 6,它在初始化 LdapConnection 时中断了以下行 -
var connection = new LdapConnection(ldapDomain)
我经历过这个 - https://github.com/dotnet/dotnet-docker/issues/1946 .但这并没有帮助。
提前致谢

最佳答案

在你最后一个 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"]

关于.net - 无法加载共享库 'libldap-2.4.so.2' 或其依赖项之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71188984/

相关文章:

c# - 如何实现延迟位图加载?

linux - 在运行时更改 Linux 消息队列权限

linux - 重新启动 apache2 时找不到 mod_authz_svn.so

docker - "no space left on device"使用 Jenkins 和 Docker 构建时

.net - 通过 WebClient.DownloadData 自动解压缩 gzip 响应

c# - 如何使用WPF绘制二叉 TreeView ?

c# - LINQ Where 语句用 OR 连接

linux - 如何在 bash 脚本中使用 sed 进行更改

git - 将依赖项(大文件或目录结构)保存在哪里以用于 Docker/Docker-Compose?

debugging - Laradock + PhpStorm + Xdebug 失败,而 PhpStorm 验证成功