kafka/images/kafka-broker/Dockerfile

64 lines
2.1 KiB
Docker

FROM [[ .docker.repo ]][[ .docker.base_images.java17.image ]] AS builder
ARG KAFKA_VERSION=[[ .kafka.broker.version ]] \
SCALA_VERSION=2.13
ADD https://www.apache.org/dyn/closer.cgi?action=download&filename=kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz
ADD https://www.apache.org/dyn/closer.cgi?action=download&filename=kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz.asc /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz.asc
ADD https://downloads.apache.org/kafka/KEYS /tmp/
RUN set -ex &&\
apk add --no-cache \
curl \
ca-certificates \
gnupg \
tar \
gzip \
&&\
cd /tmp &&\
export GNUPGHOME="$(mktemp -d)" &&\
gpg --import KEYS &&\
gpg --batch --verify kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz.asc kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz &&\
tar xvf kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz &&\
mv kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka &&\
rm -rf /opt/kafka/bin/windows /opt/kafka/site-docs
FROM [[ .docker.repo ]][[ .docker.base_images.java17.image ]]
MAINTAINER [[ .docker.maintainer ]]
ENV PATH=$PATH:/opt/kafka/bin \
KAFKA_DATA_DIR=/data \
KAFKA_CONF_DIR=/opt/kafka/config \
KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" \
KAFKA_GC_LOG_OPTS=" " \
LOG_DIR=/logs
COPY --from=builder /opt/kafka/ /opt/kafka/
RUN set -euxo pipefail &&\
apk --no-cache add \
bash \
openssl \
&&\
addgroup -g 9092 kafka &&\
adduser --system \
--ingroup kafka \
--disabled-password \
--uid 9092 \
--home /opt/kafka \
--no-create-home \
--shell /sbin/nologin \
kafka &&\
mkdir /data /logs &&\
chown kafka.kafka /data /logs &&\
chmod 700 /data /logs
COPY root/ /
RUN set -euxo pipefail &&\
chown kafka.kafka /opt/kafka/config/server.properties &&\
chmod 640 /opt/kafka/config/server.properties
EXPOSE 9092
USER kafka
CMD ["bash", "-c", "exec kafka-server-start.sh ${KAFKA_CONF_DIR}/server.properties"]