Docker image based on .NET 5 runtime, OpenCV and OpenCVSharp
10K+
Based on Microsoft official image: mcr.microsoft.com/dotnet/runtime:5.0 and OpenCv 4.5.2
# FROM mcr.microsoft.com/dotnet/runtime:5.0 as base
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
ENV DEBIAN_FRONTEND=noninteractive
ARG OPENCV_VERSION=4.5.2
WORKDIR /
# Install opencv dependencies
RUN apt-get update && apt-get -y install --no-install-recommends \
apt-transport-https \
software-properties-common \
wget \
unzip \
ca-certificates \
build-essential \
cmake \
git \
libtbb-dev \
libatlas-base-dev \
libgtk2.0-dev \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
libdc1394-22-dev \
libxine2-dev \
libv4l-dev \
libtheora-dev \
libvorbis-dev \
libxvidcore-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libavresample-dev \
x264 \
libtesseract-dev \
libgdiplus \
&& apt-get -y clean \
&& rm -rf /var/lib/apt/lists/*
# Setup opencv and opencv-contrib source
RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \
unzip ${OPENCV_VERSION}.zip && \
rm ${OPENCV_VERSION}.zip && \
mv opencv-${OPENCV_VERSION} opencv && \
wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \
unzip ${OPENCV_VERSION}.zip && \
rm ${OPENCV_VERSION}.zip && \
mv opencv_contrib-${OPENCV_VERSION} opencv_contrib
# Build OpenCV
RUN cd opencv && mkdir build && cd build && \
cmake \
-D OPENCV_EXTRA_MODULES_PATH=/opencv_contrib/modules \
-D CMAKE_BUILD_TYPE=RELEASE \
-D BUILD_SHARED_LIBS=OFF \
-D ENABLE_CXX11=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_JAVA=OFF \
-D BUILD_opencv_app=OFF \
-D BUILD_opencv_java_bindings_generator=OFF \
-D BUILD_opencv_python_bindings_generator=OFF \
-D BUILD_opencv_python_tests=OFF \
-D BUILD_opencv_ts=OFF \
-D BUILD_opencv_js=OFF \
-D BUILD_opencv_bioinspired=OFF \
-D BUILD_opencv_ccalib=OFF \
-D BUILD_opencv_datasets=OFF \
-D BUILD_opencv_dnn_objdetect=OFF \
-D BUILD_opencv_dpm=OFF \
-D BUILD_opencv_fuzzy=OFF \
-D BUILD_opencv_gapi=OFF \
-D BUILD_opencv_intensity_transform=OFF \
-D BUILD_opencv_mcc=OFF \
-D BUILD_opencv_rapid=OFF \
-D BUILD_opencv_reg=OFF \
-D BUILD_opencv_stereo=OFF \
-D BUILD_opencv_structured_light=OFF \
-D BUILD_opencv_surface_matching=OFF \
-D BUILD_opencv_videostab=OFF \
-D WITH_GSTREAMER=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
.. && make -j$(nproc) && make install && ldconfig
# Download OpenCvSharp
RUN git clone https://github.com/shimat/opencvsharp.git && cd opencvsharp
# Install the Extern lib.
# The most important thing is Copy the libOpenCvSharpExtern.so to /usr/lib,
# otherwise it won't be work correctly (throw libOpenCvSharpExtern not found exception)
RUN mkdir /opencvsharp/make && cd /opencvsharp/make && \
cmake -D CMAKE_INSTALL_PREFIX=/opencvsharp/make /opencvsharp/src && \
make -j$(nproc) && make install && \
rm -rf /opencv && \
rm -rf /opencv_contrib && \
mkdir /artifacts && \
cp /opencvsharp/make/OpenCvSharpExtern/libOpenCvSharpExtern.so /usr/lib
RUN rm -rf /opencvsharp
# use this image as base
# build with multi-stage
FROM seventychi/dotnet5-opencvsharp4 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY YourCSharpProject.csproj ./
RUN dotnet restore
COPY . ./
WORKDIR /src
RUN dotnet build "YourCSharpProject.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "YourCSharpProject.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "YourCSharpProject.dll"]
Content type
Image
Digest
Size
1 GB
Last updated
about 5 years ago
docker pull seventychi/dotnet5-opencvsharp4