Add dockerfile
This commit is contained in:
parent
77a61986f4
commit
c7cc8ba6ed
19
.dockerignore
Normal file
19
.dockerignore
Normal file
@ -0,0 +1,19 @@
|
||||
# Ignore local build outputs
|
||||
build
|
||||
*.o
|
||||
*.so
|
||||
*.a
|
||||
|
||||
# IDE / editor files
|
||||
.vscode
|
||||
.devcontainer
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# Git
|
||||
.git
|
||||
.gitignore
|
||||
|
||||
# OS / misc
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
154
Dockerfile
Normal file
154
Dockerfile
Normal file
@ -0,0 +1,154 @@
|
||||
# =========================
|
||||
# Build stage
|
||||
# =========================
|
||||
FROM nvcr.io/nvidia/deepstream:7.1-triton-multiarch AS builder
|
||||
|
||||
# Remove broken Intel Realsense repo + key
|
||||
# Install build dependencies (CMake, g++, etc.)
|
||||
RUN rm -f /etc/apt/sources.list.d/archive_uri-https_librealsense_intel_com_debian_apt-repo-jammy.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
cmake \
|
||||
git \
|
||||
pkg-config \
|
||||
libmicrohttpd-dev \
|
||||
libgtest-dev \
|
||||
nlohmann-json3-dev \
|
||||
libglib2.0 \
|
||||
libglib2.0-dev \
|
||||
libssl-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# =========================
|
||||
# Install Google Benchmark
|
||||
# =========================
|
||||
WORKDIR /tmp
|
||||
RUN git clone https://github.com/google/benchmark.git && \
|
||||
cd benchmark && \
|
||||
cmake -E make_directory "build" && \
|
||||
cmake -E chdir "build" cmake -DBENCHMARK_DOWNLOAD_DEPENDENCIES=on -DCMAKE_BUILD_TYPE=Release ../ && \
|
||||
cmake --build "build" --config Release -- -j$(nproc) && \
|
||||
#cmake -E chdir "build" ctest --build-config Release && \
|
||||
cmake --build "build" --config Release --target install && \
|
||||
cmake --install build && \
|
||||
ldconfig && \
|
||||
rm -rf /tmp/benchmark
|
||||
|
||||
# =========================
|
||||
# Install Prometheus C++ client
|
||||
# =========================
|
||||
WORKDIR /tmp
|
||||
RUN git clone https://github.com/jupp0r/prometheus-cpp.git && \
|
||||
cd prometheus-cpp && \
|
||||
git submodule update --init --recursive && \
|
||||
mkdir _build && cd _build && \
|
||||
cmake .. -DBUILD_SHARED_LIBS=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DENABLE_PUSH=OFF \
|
||||
-DENABLE_PULL=ON \
|
||||
-DENABLE_EXPOSER=ON && \
|
||||
cmake --build . --parallel $(nproc) && \
|
||||
cmake --install . && \
|
||||
ldconfig && \
|
||||
rm -rf /tmp/prometheus-cpp
|
||||
|
||||
# =========================
|
||||
# Install libhiredis
|
||||
# =========================
|
||||
WORKDIR /tmp
|
||||
RUN git clone https://github.com/redis/hiredis.git && \
|
||||
cd hiredis && \
|
||||
git checkout tags/v1.2.0 && \
|
||||
make USE_SSL=1 && \
|
||||
make install && \
|
||||
cp libhiredis* /opt/nvidia/deepstream/deepstream/lib/ && \
|
||||
ln -sf /opt/nvidia/deepstream/deepstream/lib/libhiredis.so /opt/nvidia/deepstream/deepstream/lib/libhiredis.so.1.1.0 && \
|
||||
ldconfig && \
|
||||
rm -rf /tmp/hiredis
|
||||
|
||||
# =========================
|
||||
# Install redis-server
|
||||
# =========================
|
||||
WORKDIR /tmp
|
||||
RUN wget http://download.redis.io/releases/redis-6.0.8.tar.gz && \
|
||||
tar xzf redis-6.0.8.tar.gz && \
|
||||
cd redis-6.0.8 && \
|
||||
make && \
|
||||
make install && \
|
||||
rm -rf /tmp/redis-6.0.8 /tmp/redis-6.0.8.tar.gz
|
||||
# src/redis-server --protected-mode no
|
||||
# src/redis-server &
|
||||
|
||||
# expose redis default port
|
||||
#EXPOSE 6379
|
||||
|
||||
# run redis server (no protected mode)
|
||||
#CMD ["redis-server", "--protected-mode", "no"]
|
||||
|
||||
# Set working dir
|
||||
WORKDIR /app
|
||||
|
||||
# Copy only cmake configs first (for caching)
|
||||
COPY CMakeLists.txt ./
|
||||
COPY src ./src
|
||||
|
||||
# Copy only required configs from host → container
|
||||
COPY data/addresses.txt ./data/
|
||||
COPY data/configuration.json ./data/
|
||||
COPY data/inferserver ./data/inferserver
|
||||
COPY data/nvmsgboker_configs/msgbroker_config.txt ./data/nvmsgboker_configs/
|
||||
COPY data/nvmsgconv_configs/msgconv_config.txt ./data/nvmsgconv_configs/
|
||||
COPY data/tracker_configs ./data/tracker_configs
|
||||
|
||||
|
||||
# COPY data ./data
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/lib/libnvds_redis_proto.so ./data/nvmsgboker_configs/libnvds_redis_proto.so
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/lib/libnvds_msgconv.so ./data/nvmsgconv_configs/libnvds_msgconv.so
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libnvdsgst_tracker.so ./data/tracker_configs/libnvdsgst_tracker.so
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so ./data/tracker_configs/libnvds_nvmultiobjecttracker.so
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvSORT.yml ./data/tracker_configs/config_tracker_NvSORT.yml
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_IOU.yml ./data/tracker_configs/config_tracker_IOU.yml
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_accuracy.yml ./data/tracker_configs/config_tracker_NvDCF_accuracy.yml
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_max_perf.yml ./data/tracker_configs/config_tracker_NvDCF_max_perf.yml
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_perf.yml ./data/tracker_configs/config_tracker_NvDCF_perf.yml
|
||||
# RUN cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDeepSORT.yml ./data/tracker_configs/config_tracker_NvDeepSORT.yml
|
||||
|
||||
|
||||
# Build project
|
||||
RUN mkdir -p build && cd build && \
|
||||
cmake .. && \
|
||||
make -j"$(nproc)"
|
||||
|
||||
# =========================
|
||||
# Runtime stage
|
||||
# =========================
|
||||
FROM nvcr.io/nvidia/deepstream:7.1-triton-multiarch
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy configs from build stage: Copy runtime data/configs
|
||||
COPY --from=builder /app/data ./data
|
||||
|
||||
# Copy compiled binaries from builder
|
||||
COPY --from=builder /app/build /app/build
|
||||
|
||||
|
||||
# Copy DeepStream runtime libs/configs (container → image → host at runtime)
|
||||
# These files will be available inside the image under /app/data
|
||||
RUN mkdir -p /app/data/nvmsgboker_configs && \
|
||||
mkdir -p /app/data/nvmsgconv_configs && \
|
||||
mkdir -p /app/data/tracker_configs && \
|
||||
cp /opt/nvidia/deepstream/deepstream/lib/libnvds_redis_proto.so /app/data/nvmsgboker_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/lib/libnvds_msgconv.so /app/data/nvmsgconv_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvSORT.yml /app/data/tracker_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_IOU.yml /app/data/tracker_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_accuracy.yml /app/data/tracker_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_max_perf.yml /app/data/tracker_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDCF_perf.yml /app/data/tracker_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_tracker_NvDeepSORT.yml /app/data/tracker_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so /app/data/tracker_configs/ && \
|
||||
cp /opt/nvidia/deepstream/deepstream/lib/gst-plugins/libnvdsgst_tracker.so /app/data/tracker_configs/
|
||||
|
||||
# Default entrypoint (change main binary name if different)
|
||||
ENTRYPOINT ["./build/bin/BodyPipeline"]
|
||||
Loading…
x
Reference in New Issue
Block a user