# Rx3-Docker/Kafka Dockerfile
#-------------------------------------------------------------------------------

ARG IMG_FROM_URL="rx3-docker/java:latest"

FROM ${IMG_FROM_URL}

ARG IMG_NAME
ARG IMG_NAME_FULL
ARG IMG_VERSION
ARG IMG_MAINTAINER

LABEL org.rx3.${IMG_NAME}.name=${IMG_NAME_FULL}
LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION}
LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER}
LABEL maintainer=${IMG_MAINTAINER}

ARG KAFKA_PORT

ARG KAFKA_VERSION="3.9.0"
ARG SCALA_VERSION="2.13"
ARG KAFKA_DOWNLOAD_URL="https://downloads.apache.org/kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz"

ARG KAFKA_HOME="/opt/appl/kafka"
ARG KAFKA_CONFIG="${KAFKA_HOME}/config/kraft/reconfig-server.properties"
ARG KAFKA_LIB=/var/lib/kafka
ARG KAFKA_LOG=/var/log/kafka


#---------------------------------------------------------------------------------------------------
ARG KAFKAD='#!/bin/bash                                                                          \n\
                                                                                                 \n\
usermod  -u ${KAFKA_UID} kafka                                                                   \n\
groupmod -g ${KAFKA_GID} kafka                                                                   \n\
                                                                                                 \n\
if [[ ! -f "'${KAFKA_LIB}'/meta.properties" ]]                                                   \n\
then                                                                                             \n\
    cd '${KAFKA_HOME}'                                                                           \n\
                                                                                                 \n\
    KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"                                       \n\
    bin/kafka-storage.sh format --standalone -t "${KAFKA_CLUSTER_ID}" -c '${KAFKA_CONFIG}'       \n\
fi                                                                                               \n\
                                                                                                 \n\
chown -R kafka:kafka '${KAFKA_HOME}' '${KAFKA_LIB}' '${KAFKA_LOG}
#---------------------------------------------------------------------------------------------------

#---------------------------------------------------------------------------------------------------
ARG KAFKAD_INI='[program:kafkad]                                                                 \n\
directory='${KAFKA_HOME}'                                                                        \n\
command='${KAFKA_HOME}'/bin/kafka-server-start.sh config/kraft/reconfig-server.properties        \n\
user=kafka'
#---------------------------------------------------------------------------------------------------



RUN urpmi --force wget                                                                               \
    && useradd  -M --home-dir ${KAFKA_HOME} --password "" kafka                                      \
    && mkdir -p     $( dirname ${KAFKA_HOME})                                                        \
    && wget  -q -O- ${KAFKA_DOWNLOAD_URL} | tar xzf - -C $( dirname ${KAFKA_HOME})                   \
    && mv           ${KAFKA_HOME}* ${KAFKA_HOME}                                                     \
    && sed   -i     "s%^advertised.listeners=%#advertised.listeners=%"               ${KAFKA_CONFIG} \
    && sed   -i     "s%^log.dirs=/tmp/kraft-combined-logs%log.dirs=${KAFKA_LIB}%"    ${KAFKA_CONFIG} \
    && mkdir        ${KAFKA_LOG}                                                                     \
    && ln    -s     ${KAFKA_LOG} ${KAFKA_HOME}/logs                                                  \
    && echo  -e     "${KAFKAD}"     | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/kafkad            \
    && chmod a+x    /etc/init.d/kafkad                                                               \
    && ln    -s     /etc/init.d/kafkad /etc/rcD.d/S30kafkad                                          \
    && echo  -e     "${KAFKAD_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/supervisord.d/kafkad.ini

EXPOSE ${KAFKA_PORT}