我们正在努力在google cloud run serverless container中部署asp.net core API,因为我们的api依赖于db2 drivers,所以我们在dockerfile中进行了以下更改,为了下载DB2驱动程序包,我们使用了此版本的nuget包参考-“Net5.IBM.Data.Db2-lnx”Version=“5.0.0.500”,但是我们的API抛出了下面提到的错误。
无法加载共享库'libdb2.so'或它的某个依赖项。为了帮助诊断加载问题,请考虑设置LD_DEBUG环境变量:liblibdb2.so:无法打开共享对象文件:无此文件或目录
以下是我们的docker文件更改。
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
RUN apt-get update -y && apt-get install jq dos2unix curl -y
WORKDIR /app
EXPOSE 80
EXPOSE 443
RUN chmod -R 777 /app
ENV DB2_CLI_DRIVER_INSTALL_PATH=/app/clidriver
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/clidriver/lib
ENV LIBPATH=/app/clidriver/lib
ENV PATH=$PATH:/app/clidriver/bin:/app/clidriver/lib
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["SourceCode/SomeAPI.WebApi/SomeAPI.WebApi.csproj", "SourceCode/SomeAPI.WebApi/"]
RUN dotnet restore "SourceCode/SomeAPI.WebApi/SomeAPI.WebApi.csproj"
COPY . .
WORKDIR "/src/SourceCode/SomeAPI.WebApi"
RUN dotnet build "SomeAPI.WebApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "SomeAPI.WebApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "SomeAPI.WebApi.dll"]
1条答案
按热度按时间xesrikrc1#
你的回答对我很有用。
我唯一改变的是:
1.安装Net5.IBM.Data.Db2-lnx NuGet包Link to NuGET page
1.将aspnet运行时更改为Debianmcr.microsoft.com/dotnet/aspnet:5.0.15-bullseye-slim-amd64
**编辑:**你必须从你的项目中删除“IBM.EntityFrameworkCore”,只包含“IBM.EntityFrameworkCore-lnx”。这肯定会阻碍你的开发过程,除非你设法找到在Windows上本地运行IBM.EntityFrameworkCore的解决方案。希望这能有所帮助。