@@ -8,56 +8,9 @@ ENV DEBIAN_FRONTEND=noninteractive
88RUN apt-get update && apt-get install -y \
99 git cmake build-essential pkg-config \
1010 libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
11- libcurl4-openssl-dev sqlite3 libsqlite3-dev && \
11+ libcurl4-openssl-dev sqlite3 libsqlite3-dev libmbedtls-dev && \
1212 rm -rf /var/lib/apt/lists/*
1313
14- # Build MbedTLS from source with tests disabled
15- # and build shared libraries instead of static
16- WORKDIR /opt
17- RUN git clone --branch v3.4.0 --depth 1 https://github.com/Mbed-TLS/mbedtls.git && \
18- cd mbedtls && \
19- # Enable shared library building
20- sed -i 's/option(USE_SHARED_MBEDTLS_LIBRARY "Build shared libraries." OFF)/option(USE_SHARED_MBEDTLS_LIBRARY "Build shared libraries." ON)/g' CMakeLists.txt && \
21- mkdir build && cd build && \
22- cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_TESTING=OFF -DENABLE_PROGRAMS=OFF .. && \
23- make -j$(nproc) && make install && \
24- ldconfig
25-
26- # Create pkg-config files for MbedTLS libraries
27- RUN mkdir -p /usr/local/lib/pkgconfig && \
28- echo "prefix=/usr/local\n \
29- exec_prefix=\$ {prefix}\n \
30- libdir=\$ {exec_prefix}/lib\n \
31- includedir=\$ {prefix}/include\n \
32- \n \
33- Name: mbedtls\n \
34- Description: MbedTLS Library\n \
35- Version: 3.4.0\n \
36- Requires.private: mbedx509\n \
37- Libs: -L\$ {libdir} -lmbedtls\n \
38- Cflags: -I\$ {includedir}" > /usr/local/lib/pkgconfig/mbedtls.pc && \
39- echo "prefix=/usr/local\n \
40- exec_prefix=\$ {prefix}\n \
41- libdir=\$ {exec_prefix}/lib\n \
42- includedir=\$ {prefix}/include\n \
43- \n \
44- Name: mbedcrypto\n \
45- Description: MbedTLS Crypto Library\n \
46- Version: 3.4.0\n \
47- Libs: -L\$ {libdir} -lmbedcrypto\n \
48- Cflags: -I\$ {includedir}" > /usr/local/lib/pkgconfig/mbedcrypto.pc && \
49- echo "prefix=/usr/local\n \
50- exec_prefix=\$ {prefix}\n \
51- libdir=\$ {exec_prefix}/lib\n \
52- includedir=\$ {prefix}/include\n \
53- \n \
54- Name: mbedx509\n \
55- Description: MbedTLS X509 Library\n \
56- Version: 3.4.0\n \
57- Requires.private: mbedcrypto\n \
58- Libs: -L\$ {libdir} -lmbedx509\n \
59- Cflags: -I\$ {includedir}" > /usr/local/lib/pkgconfig/mbedx509.pc
60-
6114# Fetch external dependencies
6215RUN mkdir -p /opt/external && \
6316 # ezxml
@@ -71,17 +24,9 @@ RUN mkdir -p /opt/external && \
7124WORKDIR /opt
7225COPY . .
7326
74- # Prepare build environment
75- # Make a small modification to CMakeLists.txt to ensure proper linking with mbedcrypto
76- RUN if grep -q "mbedtls mbedx509" CMakeLists.txt; then \
77- sed -i 's/mbedtls mbedx509/mbedtls mbedx509 mbedcrypto/g' CMakeLists.txt; \
78- fi
79-
8027# Build the application
8128RUN mkdir -p /etc/lightnvr /var/lib/lightnvr /var/log/lightnvr /var/run/lightnvr /var/lib/lightnvr/recordings && \
8229 chmod -R 777 /var/lib/lightnvr /var/log/lightnvr /var/run/lightnvr && \
83- PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH \
84- LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH \
8530 ./scripts/build.sh --release --with-sod && \
8631 ./scripts/install.sh --prefix=/
8732
@@ -93,19 +38,13 @@ ENV DEBIAN_FRONTEND=noninteractive
9338# Install only necessary runtime dependencies
9439RUN apt-get update && apt-get install -y \
9540 libavcodec59 libavformat59 libavutil57 libswscale6 \
96- libcurl4 sqlite3 && \
41+ libcurl4 libmbedtls14 sqlite3 && \
9742 rm -rf /var/lib/apt/lists/*
9843
9944# Create necessary directories in runtime
10045RUN mkdir -p /etc/lightnvr /var/lib/lightnvr /var/log/lightnvr /var/run/lightnvr /var/lib/lightnvr/recordings && \
10146 chmod -R 777 /var/lib/lightnvr /var/log/lightnvr /var/run/lightnvr
10247
103- # Copy MbedTLS libraries from builder
104- COPY --from=builder /usr/local/lib/libmbed*.so* /usr/local/lib/
105-
106- # Update library cache
107- RUN ldconfig
108-
10948# Copy compiled binary and config files from builder stage
11049COPY --from=builder /bin/lightnvr /bin/lightnvr
11150COPY --from=builder /etc/lightnvr /etc/lightnvr
0 commit comments