You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Work in progress

Problem

We would like to provide a simple way to deploy and run Apache Bookkeeper with an official Docker image.

We decided to not make a request to official docker images library in order to maintain implementation freedom and to not require a third party approval for every change to our dockerfiles. The choice is to create builds for Apache docker user, so we will have images named "apache/bookkeper:4.4.0" instead of "bookkeeper:4.4.0". 

Proposal

Current docker image proposal is hosted on https://github.com/caiok/bookkeeper-docker

Below are shown 

Docker Image

The proposed image 

  • Is very similar to Zookeeper one (here the github sources)
  • Is based on Alpine Linux, a very appreciated distro for docker image (for lightweightness and security orientation)
    • (warning) Problem: Alpine uses a lightweight libc implementation that could lead to some compatibility issues with some system specific java libraries. The only problem I encountered so far is with Linux native epoll in Netty 4 (an issue for BK 4.5.0).
  • Follows nearly all docker official image guidelines
    • (warning) Problem: it currenty lacks only the key import in gpg signature verification. The best practice is:

      # gpg: key F73C700D: public key "Larry Hastings <larry@hastings.org>" imported
      RUN curl -fSL "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz \
          && curl -fSL "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz.asc" -o python.tar.xz.asc \
          && export GNUPGHOME="$(mktemp -d)" \
          && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 97FC712E4C024BBEA48A61ED3A5CA953F73C700D \
          && gpg --batch --verify python.tar.xz.asc python.tar.xz \
          && rm -r "$GNUPGHOME" python.tar.xz.asc \
          # install

      In current docker build "gpg --keyserver" and "gpg --batch" are commented.

Directory Structure and Repository

  • We will include bookkeeper build files in the main repository, in a directory named "bookkeeper-docker".
  • We will provide a docker build file for each released version (starting from 4.4.0). Each build will be contained in a subdirectory named like the label we want to assign to it (i.e "4.4.0/" for image "apache/bookkeer:4.4.0").
    • The docker build file and all related files contained in these subdirectories will be used by dockerhub to create automated builds for every version.
    • (question)Question: could be useful provide a docker build "onbuild" for the last snapshot of the current development version?
  • Main directory will contain the Readme to be shown in dockerhub image page

 

  • No labels