【问题标题】:How do I connect to DB2 from a docker container using ASP.Net Core?如何使用 ASP.Net Core 从 docker 容器连接到 DB2?
【发布时间】:2019-11-04 13:20:27
【问题描述】:

我正在尝试从基于 Windows 的 Docker 容器连接到 DB2 服务器(本地)。它目前正在使用 IMB.Data.DB2.Core nuget 包(最新)。 docker 文件只是 Visual Studio 2019 创建的自动生成的文件,没有任何更改。

项目设置为 64 位,构建时没有错误或警告。

我到处搜索如何使这项工作,但无法在其他地方找到这个问题。我怀疑这个问题是由于我缺乏 Docker 知识和 DB2 需要在容器中进行一些特殊设置。我已经验证文件在构建时正在被复制(至少在本地),所以它们应该在那里。

Dockerfile:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-nanoserver-1809 AS base  
WORKDIR /app  
EXPOSE 80  
EXPOSE 443  

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1809 AS build  
WORKDIR /src  
COPY ["DockerDb2Test.csproj", ""]  
RUN dotnet restore "DockerDb2Test.csproj"  
COPY . .  
WORKDIR "/src/"  
RUN dotnet build "DockerDb2Test.csproj" -c Release -o /app  

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

FROM base AS final  
WORKDIR /app  
COPY --from=publish /app .  
ENTRYPOINT ["dotnet", "DockerDb2Test.dll"]  

有一个默认值控制器始终有效,但是在调用任何尝试访问 DB2 的代码时,将返回以下异常方法:

无法加载 DLL 'db2app64.dll' 或其依赖项之一: 找不到指定的模块。 (HRESULT 的例外情况: 0x8007007E

)

【问题讨论】:

    标签: docker .net-core db2 dockerfile asp.net-core-webapi


    【解决方案1】:

    我可以通过将以下内容添加到 ENTRYPOINT 上方的 Dockerfile 中来使其工作:

    ENV LD_LIBRARY_PATH="/app/clidriver/lib/" 环境 PATH=$PATH:"/app/clidriver/bin:/app/clidriver/lib" 运行 apt-get 更新; \ apt-get install -y libxml2-dev;

    请注意,我切换到 Linux 容器:sdk:2.2.300-stretch

    【讨论】:

      【解决方案2】:

      请关注.Net Core Linux - Docker - Local debugging with DB2的帖子

      我已包含要添加的 LD_LIBRARY_PATH 变量作为解决方案。 谢谢。

      【讨论】:

        【解决方案3】:

        需要安装一个 IBM Data Server Client Packages,它提供 IBM.Data.DB2.dll 和其他 DB2 .NET 程序集/资源/托管和非托管依赖项。

        推荐的瘦客户端是 IBM Data Server Driver Package,最新的 IBM Data Server Client Packages 的 10.5 Fixpack 5 链接是:

        http://www-01.ibm.com/support/docview.wss?uid=swg24038920

        【讨论】:

        • 什么?那个 10.5 版本已经 5 年了!客户端的版本比这要新得多,甚至不是 10.5 的最新版本...This link 总是列出可供下载的可用版本。此外,这将是完整的 .NET 框架的版本。他需要一个用于 .NET Core 的,这是不同的。请参阅this link 了解更多信息。
        猜你喜欢
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 2022-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多