From b6071861beda4647b47367e2b3b6304e1705a937 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 21 Jun 2023 07:35:45 +0300 Subject: [PATCH] Improve docker build * Use current code instead of cloning from github. * Use multi-stage instead of deleting everything. --- .dockerignore | 10 ++++++++ Dockerfile | 68 ++++++++++++++++++++++++++++++++----------------- build-docker.sh | 3 +++ 3 files changed, 57 insertions(+), 24 deletions(-) create mode 100644 .dockerignore create mode 100755 build-docker.sh 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/Dockerfile b/Dockerfile index 389da56012..8f57e59765 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,50 @@ -FROM debian:bullseye-slim +FROM debian:bookworm-slim AS build +RUN apt-get update \ + && apt-get -y --quiet upgrade \ + && apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + build-essential \ + ca-certificates \ + cmake \ + curl \ + g++ \ + gcc \ + git \ + libboost-filesystem-dev \ + libboost-log-dev \ + libboost-system-dev \ + libboost-thread-dev \ + libcurl4-openssl-dev \ + libgoogle-perftools-dev \ + libssl-dev \ + libtool \ + libtool-bin \ + make \ + zlib1g-dev + +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 \ - && git clone --depth=50 --branch=main https://github.com/drachtio/drachtio-server.git /usr/local/src/drachtio-server \ - && cd /usr/local/src/drachtio-server \ - && git submodule update --init --recursive \ - && ./bootstrap.sh \ - && mkdir /usr/local/src/drachtio-server/build \ - && cd /usr/local/src/drachtio-server/build \ - && ../configure --enable-tcmalloc=yes CPPFLAGS='-DNDEBUG' CXXFLAGS='-O2' \ - && make \ - && make install \ - && apt-get purge -y --quiet --auto-remove gcc g++ make cmake build-essential git autoconf automake 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 -y --quiet upgrade \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + libboost-filesystem1.74.0 \ + libboost-log1.74.0 \ + libboost-system1.74.0 \ + libboost-thread1.74.0 \ + libgoogle-perftools4 \ + && rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* +COPY --from=build /usr/local/src/drachtio-server/build/drachtio /usr/local/bin/ COPY ./entrypoint.sh / VOLUME ["/config"] 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) . "$@"