在docker中使用.net核心build立DB2连接时,无法加载DLL“libdb2.so”

如何使DB2数据包可见的libdb2.so文件? 我已经validation了这个软件包可以在Ubuntu上运行,但是我不能在Docker里面工作。

Dockerfile

FROM microsoft/aspnetcore:1.0 #assume the built app is in /app from the build so that the entrypoint command runs in the correct path WORKDIR /app #need to specify db2 driver lib ENV LD_LIBRARY_PATH="/app/db2Lib" #move all the source code in local directory ./app into the container directory /app COPY ./app . RUN mkdir -p db2Lib ADD db2Lib db2Lib/ ADD ./runImage.sh . RUN chmod -R a+wrx runImage.sh EXPOSE 8080 ENTRYPOINT ["./runImage.sh"] 

runImage.sh

 #!/bin/bash ls $LD_LIBRARY_PATH echo $LD_LIBRARY_PATH dotnet app.dll 

在运行图像时,我在控制台中获得以下打印件

 #from ls $LD_LIBRARY_PATH icc libDB2xml4c.so libDB2xml4c.so.58 libDB2xml4c.so.58.0 libdb2.so libdb2.so.1 libdb2clixml4c.so libdb2clixml4c.so.1 libdb2o.so libdb2o.so.1 #from echo $LD_LIBRARY_PATH /app/db2Lib 

但是当我的应用程序运行时,我得到以下错误

未处理的exception:System.DllNotFoundException:无法加载DLL'libdb2.so':无法find指定的模块。

如您所见,LD_LIBRARY_PATH环境variables正确地指向正确的目录,如文档所示: https://www.ibm.com/developerworks/community/blogs/96960515-2ea1-4391-8170-b0515d08e4da/entry/Instructions_for_downloading_and_using_DB2_NET_Core_provider_package? lang = en 。

要仔细检查是否正在设置环境variables,我这样做

 Console.WriteLine(Configuration["LD_LIBRARY_PATH"]); 

这确实打印

/应用/ db2Lib