~singpolyma/biboumi

3e0de8128d7ce6037e033bd42b54e7da0ab381ad — Stefan Schwarz 4 years ago 5ff3696
Remove build packages from docker image by using multistage Dockerfile.
1 files changed, 40 insertions(+), 32 deletions(-)

M docker/biboumi/alpine/Dockerfile
M docker/biboumi/alpine/Dockerfile => docker/biboumi/alpine/Dockerfile +40 -32
@@ 5,44 5,52 @@
# This is the prefered way to build the release image, used by the
# end users, in production.

FROM docker.io/alpine:latest as builder

RUN apk add --no-cache --virtual .build cmake expat-dev g++ git libidn-dev \
        make postgresql-dev python2 sqlite-dev udns-dev util-linux-dev

RUN git clone https://github.com/randombit/botan.git && \
    cd botan && \
    ./configure.py --prefix=/usr && \
    make -j8 && \
    make install

RUN git clone git://git.louiz.org/biboumi && \
    mkdir ./biboumi/build && \
    cd ./biboumi/build && \
    cmake .. -DCMAKE_INSTALL_PREFIX=/usr \
             -DCMAKE_BUILD_TYPE=Release \
             -DWITH_BOTAN=1 \
             -DWITH_SQLITE3=1 \
             -DWITH_LIBIDN=1 \
             -DWITH_POSTGRESQL=1 && \
    make -j8 && \
    make install

# ---

FROM docker.io/alpine:latest

RUN apk add --no-cache\
    g++\
    cmake\
    make\
    udns-dev\
    sqlite-dev\
    postgresql-dev\
    libuuid\
    util-linux-dev\
    expat-dev\
    libidn-dev\
    git\
    python2

# Install botan
RUN git clone https://github.com/randombit/botan.git && cd botan && ./configure.py --prefix=/usr && make -j8 && make install && rm -rf /botan

# Install biboumi
RUN git clone git://git.louiz.org/biboumi && mkdir ./biboumi/build && cd ./biboumi/build &&\
   cmake .. -DCMAKE_INSTALL_PREFIX=/usr\
            -DCMAKE_BUILD_TYPE=Release\
            -DWITH_BOTAN=1\
            -DWITH_SQLITE3=1\
            -DWITH_LIBIDN=1\
            -DWITH_POSTGRESQL=1\
   && make -j8 && make install && rm -rf /biboumi

RUN adduser biboumi -D -h /home/biboumi

RUN mkdir /var/lib/biboumi
RUN chown -R biboumi:biboumi /var/lib/biboumi
RUN apk add --no-cache libidn libpq libstdc++ libuuid postgresql-libs \
        sqlite-libs udns expat ca-certificates

COPY --from=builder /usr/bin/botan /usr/bin/botan
COPY --from=builder /usr/lib/libbotan* /usr/lib/
COPY --from=builder /usr/lib/pkgconfig/botan-2.pc /usr/lib/pkgconfig/botan-2.pc

COPY --from=builder /etc/biboumi /etc/biboumi
COPY --from=builder /usr/bin/biboumi /usr/bin/biboumi

COPY ./biboumi.cfg /etc/biboumi/biboumi.cfg
RUN chown -R biboumi:biboumi /etc/biboumi

RUN adduser biboumi -D -h /home/biboumi && \
    mkdir /var/lib/biboumi && \
    chown -R biboumi:biboumi /var/lib/biboumi && \
    chown -R biboumi:biboumi /etc/biboumi

WORKDIR /home/biboumi
USER biboumi

CMD ["/usr/bin/biboumi", "/etc/biboumi/biboumi.cfg"]