Как подключиться к DB2 из док-контейнера с помощью ASP.Net Core?

Я пытаюсь подключиться к серверу DB2 (локально) из контейнера Docker на базе Windows. В настоящее время он использует пакет nuget IMB.Data.DB2.Core (последний). Файл докера — это просто автоматически сгенерированный файл, который Visual Studio 2019 создает без изменений.

Проект настроен на 64-разрядную версию, при сборке нет ошибок или предупреждений.

Я везде искал, как заставить это работать, и не смог найти эту проблему в другом месте. Я подозреваю, что проблема связана с отсутствием у меня знаний о Docker и с тем, что DB2 нуждается в какой-то конкретной настройке внутри контейнера. Я проверил, что файлы копируются (по крайней мере, локально) при сборке, поэтому они должны быть там.

Докерфайл:

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, возвращается следующий метод исключения:

Unable to load DLL 'db2app64.dll' or one of its dependencies: The specified module could not be found. (Exception from HRESULT: 0x8007007E

)

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
2
0
1 862
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Необходимо установить один из клиентских пакетов IBM Data Server, который поставляет IBM.Data.DB2.dll и другие сборки/ресурсы/управляемые и неуправляемые зависимости DB2 .NET.

Рекомендуемым тонким клиентом является пакет драйверов IBM Data Server, 10.5 Fixpack 5. Ссылка на последние клиентские пакеты IBM Data Server:

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

Какой? Релизу 10.5 исполнилось 5 лет! Существуют гораздо более новые версии клиента, и это даже не самая новая версия 10.5... Эта ссылка всегда перечисляет доступные версии для загрузки. Кроме того, это будет версия для полной платформы .NET. Ему нужен другой для .NET Core. См. эта ссылка для получения дополнительной информации.

bhamby 26.06.2019 14:45
Ответ принят как подходящий

Я смог заставить его работать, добавив следующее в Dockerfile над ENTRYPOINT:

ENV LD_LIBRARY_PATH="/app/clidriver/lib/" Env PATH=$PATH:"/app/clidriver/bin:/app/clidriver/lib" RUN apt-получить обновление; \ apt-get install -y libxml2-dev;

Обратите внимание, что я переключился на контейнер Linux: sdk:2.2.300-stretch

Пожалуйста, подпишитесь на пост .Net Core Linux — Docker — Локальная отладка с помощью DB2

Я включил переменную LD_LIBRARY_PATH для добавления в качестве решения. Спасибо.

Другие вопросы по теме