|
17 | 17 | # under the License. |
18 | 18 | # |
19 | 19 |
|
| 20 | +FROM alpine:3.20 as bk-dist |
| 21 | + |
| 22 | +ARG BK_VERSION=4.17.1 |
| 23 | +ARG DISTRO_NAME=bookkeeper-server-${BK_VERSION}-bin |
| 24 | +ARG DISTRO_URL=https://archive.apache.org/dist/bookkeeper/bookkeeper-${BK_VERSION}/${DISTRO_NAME}.tar.gz |
| 25 | + |
| 26 | +RUN apk update && apk add gpg gpg-agent wget \ |
| 27 | + && cd /opt \ |
| 28 | + && wget -q "${DISTRO_URL}" \ |
| 29 | + && wget -q "${DISTRO_URL}.asc" \ |
| 30 | + && wget -q "${DISTRO_URL}.sha512" \ |
| 31 | + && sha512sum -c ${DISTRO_NAME}.tar.gz.sha512 \ |
| 32 | + && wget -q https://dist.apache.org/repos/dist/release/bookkeeper/KEYS \ |
| 33 | + && gpg --import KEYS \ |
| 34 | + && gpg --batch --verify "$DISTRO_NAME.tar.gz.asc" "$DISTRO_NAME.tar.gz" \ |
| 35 | + && tar -xzf "$DISTRO_NAME.tar.gz" \ |
| 36 | + && mv bookkeeper-server-${BK_VERSION}/ /opt/bookkeeper/ \ |
| 37 | + && rm -rf "$DISTRO_NAME.tar.gz" "$DISTRO_NAME.tar.gz.asc" "$DISTRO_NAME.tar.gz.sha512"; |
| 38 | + |
| 39 | +COPY scripts /opt/bookkeeper/scripts |
| 40 | + |
| 41 | +RUN for SUBDIRECTORY in conf logs data; do \ |
| 42 | + mkdir -p /opt/bookkeeper/$SUBDIRECTORY; \ |
| 43 | + chmod -R ug+rwx /opt/bookkeeper/$SUBDIRECTORY; \ |
| 44 | + chown -R 10000:0 /opt/bookkeeper/$SUBDIRECTORY; \ |
| 45 | + done |
| 46 | + |
| 47 | +RUN for SUBDIRECTORY in scripts bin; do \ |
| 48 | + chmod -R g+rx /opt/bookkeeper/$SUBDIRECTORY; \ |
| 49 | + done |
| 50 | + |
| 51 | +RUN chmod -R o+rx /opt/bookkeeper |
| 52 | + |
20 | 53 | FROM eclipse-temurin:17 as jre-build |
21 | 54 |
|
22 | 55 | # Create a custom Java runtime |
@@ -48,43 +81,39 @@ ENV DEBIAN_FRONTEND=noninteractive |
48 | 81 | ARG UBUNTU_MIRROR=http://archive.ubuntu.com/ubuntu/ |
49 | 82 | ARG UBUNTU_SECURITY_MIRROR=http://security.ubuntu.com/ubuntu/ |
50 | 83 |
|
51 | | -# Download Apache Bookkeeper, untar and clean up |
52 | 84 | RUN set -x \ |
53 | 85 | && sed -i -e "s|http://archive\.ubuntu\.com/ubuntu/|${UBUNTU_MIRROR:-http://archive.ubuntu.com/ubuntu/}|g" \ |
54 | 86 | -e "s|http://security\.ubuntu\.com/ubuntu/|${UBUNTU_SECURITY_MIRROR:-http://security.ubuntu.com/ubuntu/}|g" /etc/apt/sources.list \ |
55 | 87 | && echo 'Acquire::http::Timeout "30";\nAcquire::http::ConnectionAttemptDelayMsec "2000";\nAcquire::https::Timeout "30";\nAcquire::https::ConnectionAttemptDelayMsec "2000";\nAcquire::ftp::Timeout "30";\nAcquire::ftp::ConnectionAttemptDelayMsec "2000";\nAcquire::Retries "15";' > /etc/apt/apt.conf.d/99timeout_and_retries \ |
56 | | - && adduser "${BK_USER}" \ |
57 | 88 | && apt-get update \ |
58 | 89 | && apt-get install -y ca-certificates apt-transport-https \ |
59 | 90 | && apt-get install -y --no-install-recommends python3 pip \ |
60 | 91 | && ln -s /usr/bin/python3 /usr/bin/python \ |
61 | | - && apt-get install -y --no-install-recommends gpg gpg-agent wget sudo \ |
| 92 | + && apt-get install -y --no-install-recommends wget sudo \ |
62 | 93 | && apt-get -y --purge autoremove \ |
63 | 94 | && apt-get autoclean \ |
64 | 95 | && apt-get clean \ |
65 | 96 | && rm -rf /var/lib/apt/lists/* \ |
66 | | - && mkdir -pv /opt \ |
67 | | - && cd /opt \ |
68 | | - && wget -q "${DISTRO_URL}" \ |
69 | | - && wget -q "${DISTRO_URL}.asc" \ |
70 | | - && wget -q "${DISTRO_URL}.sha512" \ |
71 | | - && sha512sum -c ${DISTRO_NAME}.tar.gz.sha512 \ |
72 | | - && wget https://dist.apache.org/repos/dist/release/bookkeeper/KEYS \ |
73 | | - && gpg --import KEYS \ |
74 | | - && gpg --batch --verify "$DISTRO_NAME.tar.gz.asc" "$DISTRO_NAME.tar.gz" \ |
75 | | - && tar -xzf "$DISTRO_NAME.tar.gz" \ |
76 | | - && mv bookkeeper-server-${BK_VERSION}/ /opt/bookkeeper/ \ |
77 | | - && rm -rf "$DISTRO_NAME.tar.gz" "$DISTRO_NAME.tar.gz.asc" "$DISTRO_NAME.tar.gz.sha512" \ |
78 | 97 | && pip install zk-shell |
79 | 98 |
|
80 | | -WORKDIR /opt/bookkeeper |
81 | | - |
| 99 | +# JDK |
82 | 100 | ENV JAVA_HOME=/opt/java/openjdk |
83 | 101 | ENV PATH="$PATH:$JAVA_HOME/bin" |
84 | 102 | COPY --from=jre-build /javaruntime $JAVA_HOME |
85 | 103 |
|
86 | | -COPY scripts /opt/bookkeeper/scripts |
87 | | -RUN chmod +x -R /opt/bookkeeper/scripts/ |
| 104 | +# BK |
| 105 | +ENV ZK_dataDir=${BK_HOME}/data/zookeeper/data |
| 106 | +ENV ZK_dataLogDir=${BK_HOME}/data/zookeeper/txlog |
| 107 | +ENV BK_DATA_DIR=${BK_HOME}/data |
| 108 | +ENV BK_journalDirectory=${BK_HOME}/data/journal |
| 109 | +ENV BK_ledgerDirectories=${BK_HOME}/data/ledgers |
| 110 | +ENV ZK_SHELL_HOME=${BK_HOME}/data |
| 111 | +COPY --from=bk-dist /opt/bookkeeper ${BK_HOME} |
| 112 | + |
| 113 | +WORKDIR ${BK_HOME} |
| 114 | + |
| 115 | +RUN adduser "${BK_USER}" -u 10000 --gid 0 --home ${BK_HOME} --no-create-home --disabled-password |
| 116 | +USER 10000 |
88 | 117 |
|
89 | 118 | ENTRYPOINT [ "/bin/bash", "/opt/bookkeeper/scripts/entrypoint.sh" ] |
90 | 119 | CMD ["bookie"] |
|
0 commit comments