Невозможно создать Docker с OpenCV и Tesseract для приложения .NET 8.0.C#

Место общения программистов C#
Ответить
Anonymous
 Невозможно создать Docker с OpenCV и Tesseract для приложения .NET 8.0.

Сообщение Anonymous »

Я создавал Dockerfile, который должен создать мой веб-API ASP.NET Core и для работы которого требуются некоторые библиотеки, такие как OpenCV и Tesseract. Мой Dockerfile правильно создает контейнеры и изображения, но как только один из моих классов должен использовать OpenCV/Tesseract, возникают следующие ошибки:

2025-05-22 11:19:19 System.TypeInitializationException: инициализатор типа для OpenCvSharp.Internal.NativeMethods выдал исключение.

2025-05-22 11:19:19 ---> System.DllNotFoundException: невозможно загрузить общую библиотеку OpenCvSharpExtern или одну из ее зависимостей. Чтобы диагностировать проблемы с загрузкой, рассмотрите возможность использования такого инструмента, как strace. Если вы используете glibc, рассмотрите возможность установки переменной среды LD_DEBUG:

2025-05-22 11:19:19 libavcodec.so.58: невозможно открыть общий объектный файл: такого файла или каталога нет

2025-05-22 11:19:19 /usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.16/OpenCvSharpExtern.so: невозможно открыть файл общего объекта: такого файла или каталога нет

22 мая 2025 11:19:19 /usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.16/libOpenCvSharpExtern.so: невозможно открыть файл общего объекта: такого файла или каталога нет

22 мая 2025 11:19:19 /usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.16/OpenCvSharpExtern: невозможно открыть файл общего объекта: такого файла или каталога нет

2025-05-22 11:19:19 /usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.16/libOpenCvSharpExtern: невозможно открыть файл общего объекта: такого файла или каталога нет

Это Dockerfile:

Код: Выделить всё

# Build stage
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /App

COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -r linux-x64 --self-contained false -o out

# Runtime stage
FROM mcr.microsoft.com/dotnet/aspnet:8.0

WORKDIR /App

# Instala dependencias de OpenCV y Tesseract
RUN apt-get update
RUN apt-get -y install tesseract-ocr
RUN apt-get install -y \
libopencv-dev \
libopencv-core-dev \
libopencv-imgproc-dev \
libopencv-imgcodecs-dev \
libopencv-highgui-dev \
libgl1-mesa-glx \
libglib2.0-0 \
ffmpeg  \
libsm6 \
libxext6 \
libxrender1 \
libgtk2.0-dev \
libtesseract-dev \
&& ln -s /usr/lib/x86_64-linux-gnu/libtesseract.so.5 /usr/lib/x86_64-linux-gnu/libtesseract.so.4 \
&& rm -rf /var/lib/apt/lists/*

COPY --from=build /App/out ./

ENV LD_LIBRARY_PATH=/App:/usr/local/lib:/usr/lib/x86_64-linux-gnu

# Symlinks por compatibilidad
RUN ln -s /App/libOpenCvSharpExtern.so /App/OpenCvSharpExtern.so || true && \
ln -s /App/libOpenCvSharpExtern.so /App/OpenCvSharpExtern || true && \
ln -s /App/libOpenCvSharpExtern.so /App/libOpenCvSharpExtern || true

ENTRYPOINT ["dotnet", "DataViewerApi.dll"]
Есть мысли? Я некоторое время боролся с этим.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/796 ... et-8-0-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»