使用.Net容器的核心(3.1) Web。
我通过nuget包IBM.Data.DB2.Core-lnx (3.1.0.300)连接Db2。
当我独立于VisualStudio 2019构建和运行我的Dockerfile时,这个VisualStudio连接可以正常工作。
但是,在尝试通过VS (快速模式)进行调试时,我遇到了以下异常:
无法加载共享库'libdb2.so‘或其依赖项之一。为了帮助诊断加载问题,请考虑设置LD_DEBUG环境变量:liblebdb2.so:无法打开共享对象文件:没有这样的文件或目录
我猜想,定位资源的失败是因为快速模式调试与Docker容器的工作方式有关。通过将应用程序输出复制到挂载,我的IBM变量无法找到NuGet剪贴器文件夹。它们通常如下所示:
ENV DB2_CLI_DRIVER_INSTALL_PATH="/app/clidriver" \
LD_LIBRARY_PATH="/app/clidriver/lib" \
LIBPATH="/app/clidriver/lib" \
PATH=$PATH:"/app/clidriver/bin:/app/clidriver/lib:/app/clidriver/adm"如何更新这些内容以指向已挂载的应用程序内容?假设这就是问题所在..。
*注意,我正在Dockerfile的底部安装libxml2-dev包。
如果有人有在Linux容器中调试Db2连接的成功策略,我很想听听您做了什么。事先非常感谢。
发布于 2020-11-14 05:01:10
在调试容器上运行shell使我能够看到已挂载的内容并获得clidriver路径。在Db2环境变量中设置此值解决了问题:
ENV DB2_CLI_DRIVER_INSTALL_PATH="/app/bin/Debug/netcoreapp3.1/clidriver" \
LD_LIBRARY_PATH="/app/bin/Debug/netcoreapp3.1/clidriver/lib" \
LIBPATH="/app/bin/Debug/netcoreapp3.1/clidriver/lib" \
PATH=$PATH:"/app/bin/Debug/netcoreapp3.1/clidriver/bin:/app/bin/Debug/netcoreapp3.1/clidriver/lib:/app/bin/Debug/netcoreapp3.1/clidriver/adm"发布于 2021-05-10 15:26:49
我几乎有一个星期都在面对这些担忧,很高兴能解决这个问题。
解决方案:
LD_LIBRARY_PATH=<app release folder path>/netcoreapp3.1/clidriver/lib当您包含LD_LIBRARY_PATH变量时,路径值将与“./root/usr/lib64 64”一起附加到现有值中。
请注意,如果不包括LD_LIBRARY_PATH,吊舱将出错。
https://stackoverflow.com/questions/64828258
复制相似问题