|
| 1 | +FROM debian:bookworm-slim |
| 2 | + |
| 3 | +ARG BUILD_CPUS=4 |
| 4 | + |
| 5 | +RUN apt-get update \ |
| 6 | + && apt-get -y --quiet --force-yes upgrade \ |
| 7 | + && apt-get install -y --no-install-recommends ca-certificates gcc g++ make build-essential \ |
| 8 | + cmake git autoconf automake pkg-config curl \ |
| 9 | + libcjson-dev libmp3lame-dev libmysqlcppconn-dev libspdlog-dev libfmt-dev \ |
| 10 | + libssl-dev libcurl4-openssl-dev libgoogle-perftools-dev libboost-all-dev \ |
| 11 | + libev-dev |
| 12 | + |
| 13 | +# Build libwebsockets v4.3.3 with libev support |
| 14 | +COPY ops-ws.c.patch /tmp/ops-ws.c.patch |
| 15 | +RUN cd /usr/local/src \ |
| 16 | + && git clone https://github.com/warmcat/libwebsockets.git -b v4.3.3 --depth 1 \ |
| 17 | + && cd libwebsockets/lib/roles/ws \ |
| 18 | + && patch ops-ws.c < /tmp/ops-ws.c.patch \ |
| 19 | + && cd /usr/local/src/libwebsockets \ |
| 20 | + && mkdir -p build && cd build \ |
| 21 | + && cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLWS_WITH_NETLINK=OFF -DLWS_WITH_LIBEV=1 \ |
| 22 | + && make -j${BUILD_CPUS} \ |
| 23 | + && make install \ |
| 24 | + && rm -rf /usr/local/src/libwebsockets |
| 25 | + |
| 26 | +# Build AWS SDK C++ v1.11.500 |
| 27 | +RUN cd /usr/local/src \ |
| 28 | + && git clone https://github.com/aws/aws-sdk-cpp -b 1.11.500 --depth 1 \ |
| 29 | + && cd aws-sdk-cpp \ |
| 30 | + && git submodule update --init --recursive \ |
| 31 | + && mkdir -p build && cd build \ |
| 32 | + && cmake .. -DBUILD_ONLY="s3;core;s3-crt;monitoring" \ |
| 33 | + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |
| 34 | + -DBUILD_SHARED_LIBS=ON \ |
| 35 | + -DENABLE_TESTING=OFF \ |
| 36 | + -DAUTORUN_UNIT_TESTS=OFF \ |
| 37 | + -DCMAKE_CXX_FLAGS="-Wno-unused-parameter -Wno-error=nonnull -Wno-error=deprecated-declarations -Wno-error=uninitialized -Wno-error=maybe-uninitialized -Wno-error=array-bounds" \ |
| 38 | + && make -j${BUILD_CPUS} \ |
| 39 | + && make install \ |
| 40 | + && find /usr/local/src/aws-sdk-cpp/ -type f -name "*.pc" -exec cp -t /usr/local/lib/pkgconfig/ {} + \ |
| 41 | + && rm -rf /usr/local/src/aws-sdk-cpp |
| 42 | + |
| 43 | +COPY . /usr/local/src/upload-recordings |
| 44 | + |
| 45 | +RUN cd /usr/local/src/upload-recordings \ |
| 46 | + && export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH \ |
| 47 | + && autoreconf -fi \ |
| 48 | + && mkdir -p build && cd build \ |
| 49 | + && ../configure --enable-tcmalloc=yes CXXFLAGS='-g -O2' \ |
| 50 | + && make -j${BUILD_CPUS} \ |
| 51 | + && make install \ |
| 52 | + && apt-get purge -y --quiet --auto-remove gcc g++ make cmake build-essential git autoconf automake pkg-config \ |
| 53 | + && rm -rf /var/lib/apt/* \ |
| 54 | + && rm -rf /var/lib/dpkg/* \ |
| 55 | + && rm -rf /var/lib/cache/* \ |
| 56 | + && rm -Rf /var/log/* \ |
| 57 | + && rm -Rf /var/lib/apt/lists/* \ |
| 58 | + && rm -Rf /usr/local/src/upload-recordings |
| 59 | + |
| 60 | +RUN ldconfig |
| 61 | + |
| 62 | +RUN mkdir -p /tmp/uploads |
| 63 | + |
| 64 | +EXPOSE 3000 |
| 65 | + |
| 66 | +ENTRYPOINT ["upload_recordings"] |
| 67 | +CMD ["--port", "3000"] |
0 commit comments