diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..d536ee6e7d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +.git +.gitignore +.dockerignore +Dockerfile +build-docker.sh +*.o +*.lo +*.la +**/build +**/.deps diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 573d42b225..c1cacdb138 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -83,6 +83,6 @@ jobs: tags: ${{ steps.prepare_tag.outputs.image_id }}:${{ steps.prepare_tag.outputs.version }} build-args: | BUILD_CPUS=16 - DETECTED_TAG=${{ steps.prepare_tag.outputs.tag }} + MYVERSION=${{ steps.prepare_tag.outputs.tag }} push: true no-cache: true diff --git a/Dockerfile b/Dockerfile index cc45f66270..5845839c64 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,38 +1,53 @@ -FROM debian:bookworm-slim +FROM debian:bookworm-slim AS build +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + build-essential \ + ca-certificates \ + cmake \ + curl \ + g++ \ + gcc \ + git \ + jq \ + libboost-filesystem-dev \ + libboost-log-dev \ + libboost-system-dev \ + libboost-thread-dev \ + libcurl4-openssl-dev \ + libgoogle-perftools-dev \ + libhiredis-dev \ + libssl-dev \ + libtool \ + libtool-bin \ + make \ + zlib1g-dev -ARG BUILD_CPUS=4 -ARG DETECTED_TAG=main +WORKDIR /usr/local/src/drachtio-server +COPY . . +RUN ./bootstrap.sh +WORKDIR /usr/local/src/drachtio-server/build +ARG MYVERSION=1.0.0 +RUN ../configure --enable-tcmalloc=yes CPPFLAGS='-DNDEBUG' CXXFLAGS='-O2' +RUN make -j$(nproc) MYVERSION=${MYVERSION} +FROM debian:bookworm-slim RUN apt-get update \ - && apt-get -y --quiet --force-yes upgrade \ - && apt-get install -y --no-install-recommends ca-certificates gcc g++ make build-essential \ - cmake git autoconf automake curl libtool libtool-bin libssl-dev libcurl4-openssl-dev zlib1g-dev \ - libgoogle-perftools-dev jq libboost-all-dev \ - && git clone --depth=50 https://github.com/drachtio/drachtio-server.git /usr/local/src/drachtio-server \ - && cd /usr/local/src/drachtio-server \ - && git fetch --tags \ - && echo "checking out ${DETECTED_TAG}" \ - && git checkout ${DETECTED_TAG} \ - && git submodule update --init --recursive \ - && ./bootstrap.sh \ - && mkdir build \ - && cd build \ - && ../configure --enable-tcmalloc=yes CPPFLAGS='-DNDEBUG' CXXFLAGS='-O2' \ - && make -j${BUILD_CPUS} \ - && make install \ - && apt-get purge -y --quiet --auto-remove gcc g++ make cmake build-essential git libtool libtool-bin \ - && rm -rf /var/lib/apt/* \ - && rm -rf /var/lib/dpkg/* \ - && rm -rf /var/lib/cache/* \ - && rm -Rf /var/log/* \ - && rm -Rf /var/lib/apt/lists/* \ - && cd /usr/local/src \ - && cp drachtio-server/docker.drachtio.conf.xml /etc/drachtio.conf.xml \ - && cp drachtio-server/entrypoint.sh / \ - && rm -Rf drachtio-server \ - && cd /usr/local/bin \ - && rm -f timer ssltest parser uri_test test_https test_asio_curl + && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + jq \ + libboost-filesystem1.74.0 \ + libboost-log1.74.0 \ + libboost-system1.74.0 \ + libboost-thread1.74.0 \ + libgoogle-perftools4 \ + libhiredis0.14 \ + && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* +COPY --from=build /usr/local/src/drachtio-server/build/drachtio /usr/local/bin/ +COPY docker.drachtio.conf.xml /etc/drachtio.conf.xml COPY ./entrypoint.sh / VOLUME ["/config"] diff --git a/Makefile.am b/Makefile.am index bc1469008e..6e50e09afd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -25,9 +25,14 @@ drachtio_CPPFLAGS= -I${srcdir}/deps/sofia-sip/libsofia-sip-ua/su -I${srcdir}/dep -D_REENTRANT -DBOOST_LOG_DYN_LINK -DDRACHTIO_VERSION=\"$(MYVERSION)\" -Wno-error=deprecated-declarations \ -DBOOST_ALLOW_DEPRECATED_HEADERS -O2 +if DEP_HIREDIS +drachtio_CPPFLAGS += -I${srcdir}/deps +AM_LDFLAGS += -L${srcdir}/deps/hiredis +endif + drachtio_LDADD= ${srcdir}/deps/sofia-sip/libsofia-sip-ua/.libs/libsofia-sip-ua.a \ ${srcdir}/deps/jansson/src/.libs/libjansson.a \ - ${srcdir}/deps/hiredis/libhiredis.a -lcurl -lpthread -lssl -lcrypto -lz + -lhiredis -lcurl -lpthread -lssl -lcrypto -lz if LINUX drachtio_CPPFLAGS += -Wno-stringop-overflow @@ -54,6 +59,10 @@ endif BUILT_SOURCES=${srcdir}/deps/sofia-sip/libsofia-sip-ua/.libs/libsofia-sip-ua.a \ ${srcdir}/deps/jansson/src/.libs/libjansson.a ${srcdir}/deps/prometheus-cpp/build/lib/libprometheus-cpp-core.a +if DEP_HIREDIS +BUILT_SOURCES += ${srcdir}/deps/hiredis/libhiredis.a +endif + clean-local: ${srcdir}/deps/sofia-sip/libsofia-sip-ua/.libs/libsofia-sip-ua.a: @@ -67,5 +76,7 @@ ${srcdir}/deps/prometheus-cpp/build/lib/libprometheus-cpp-core.a ${srcdir}/deps/ cmake .. -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX=`pwd` && \ $(MAKE) && make install +if DEP_HIREDIS ${srcdir}/deps/hiredis/libhiredis.a: cd ${srcdir}/deps/hiredis && cmake -DBUILD_SHARED_LIBS=OFF -DENABLE_SSL=ON . && $(MAKE) +endif diff --git a/build-docker.sh b/build-docker.sh new file mode 100755 index 0000000000..603ad497ac --- /dev/null +++ b/build-docker.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +docker build --build-arg MYVERSION=$(git describe --always) . "$@" diff --git a/configure.ac b/configure.ac index 8ed659f08c..b4e77a3f9b 100644 --- a/configure.ac +++ b/configure.ac @@ -10,6 +10,7 @@ AC_LANG(C++) AX_CXX_COMPILE_STDCXX_11() AX_CXX_COMPILE_STDCXX_17(noext, optional) +AM_CONDITIONAL([DEP_HIREDIS], [test -f "${srcdir}/deps/hiredis/CMakeLists.txt"]) AM_CONDITIONAL(OSX, false) AM_CONDITIONAL(LINUX, false) diff --git a/src/blacklist.cpp b/src/blacklist.cpp index cd16776068..67baabfab4 100644 --- a/src/blacklist.cpp +++ b/src/blacklist.cpp @@ -22,7 +22,7 @@ THE SOFTWARE. #include #include -#include "hiredis.h" +#include #include "blacklist.hpp" #include "controller.hpp"