From 88393b1237d2149d90bff6aedb9da33b83077e5f 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 | 9 +++++++ Dockerfile | 67 +++++++++++++++++++++++++++++++------------------ build-docker.sh | 3 +++ 3 files changed, 55 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..a246f066f3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +.git +.gitignore +.dockerignore +Dockerfile +*.o +*.lo +*.la +**/build +**/.deps diff --git a/Dockerfile b/Dockerfile index 389da56012..aece3ac896 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,49 @@ -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=${VERSION} +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 \ + && 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..48d49f7e92 --- /dev/null +++ b/build-docker.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +docker build --build-arg VERSION=$(git describe --always) .