~singpolyma/biboumi

26eb28dc2368d14e171201a0c6b76b76b19e1ddc — louiz’ 6 years ago dcb48c5
Split the biboumi dockerfile into two, to be able to disable the cache
M .gitlab-ci.yml => .gitlab-ci.yml +1 -1
@@ 190,5 190,5 @@ packaging:docker:
  before_script: []
  script:
    - docker login -p $DOCKER_PASSWORD -u louiz
    - docker build -t louiz/biboumi docker/biboumi
    - ./docker/biboumi/build-docker.sh louiz/biboumi
    - docker push louiz/biboumi

M docker/biboumi/Dockerfile => docker/biboumi/Dockerfile +5 -25
@@ 1,28 1,8 @@
# This Dockerfile creates a docker image running biboumi

FROM docker.io/fedora:latest

RUN dnf --refresh install -y\
    gcc-c++\
    cmake\
    make\
    udns-devel\
    sqlite-devel\
    libuuid-devel\
    expat-devel\
    libidn-devel\
    systemd-devel\
    git\
    python\
    && dnf clean all

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

# Install litesql
RUN git clone git://git.louiz.org/litesql && mkdir /litesql/build && cd /litesql/build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr && make -j8 &&  cd /litesql/build && make install && ldconfig && rm -rf /litesql

# Install biboumi
# This dockerfile uses the image built using Dockerfile.base, and installs
# biboumi in it

FROM biboumi-base

RUN git clone git://git.louiz.org/biboumi && mkdir ./biboumi/build && cd ./biboumi/build &&\
   cmake .. -DCMAKE_INSTALL_PREFIX=/usr\
            -DCMAKE_BUILD_TYPE=Release\

A docker/biboumi/Dockerfile.base => docker/biboumi/Dockerfile.base +23 -0
@@ 0,0 1,23 @@
# This dockerfile install all the dependencies needing to compile biboumi

FROM docker.io/fedora:latest

RUN dnf --refresh install -y\
    gcc-c++\
    cmake\
    make\
    udns-devel\
    sqlite-devel\
    libuuid-devel\
    expat-devel\
    libidn-devel\
    systemd-devel\
    git\
    python\
    && dnf clean all

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

# Install litesql
RUN git clone git://git.louiz.org/litesql && mkdir /litesql/build && cd /litesql/build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr && make -j8 &&  cd /litesql/build && make install && ldconfig && rm -rf /litesql

M docker/biboumi/README.rst => docker/biboumi/README.rst +20 -0
@@ 76,3 76,23 @@ The database is stored in the /var/lib/biboumi/ directory. If you don’t bind
a local directory to it, the database will be lost when the container is
stopped. If you want to keep your database between each run, bind it with
the -v option, like this: **-v /srv/biboumi/:/var/lib/biboumi**.

Building
--------

This image is built from 2 Dockerfiles:
- Dockerfile.base: builds and installs all the dependencies needed to build and run biboumi
- Dockerfile: builds and installs biboumi itself

The goal is to be able to force the rebuild of biboumi itself (by using
the --no-cache option) without having to rebuild and install all its
dependencies.

The build does not require any file in the build context, everything is
fetched during the build using git or dnf.

To build a biboumi image named “foo/biboumi”, you can run the script:

```
./build-docker.sh foo/biboumi
```

A docker/biboumi/build-docker.sh => docker/biboumi/build-docker.sh +14 -0
@@ 0,0 1,14 @@
#!/bin/sh

if [[ -z "$1" ]]; then
    echo "Usage: ./build-docker.sh <image_name>"
    echo "Example: ./build-docker.sh docker.io/coucou/biboumi"
    exit 1
fi

directory=$(dirname $0)
image_name=$1

echo $directory
docker build -t biboumi-base $directory -f $directory/Dockerfile.base
docker build -t $image_name  $directory -f $directory/Dockerfile --no-cache