diff --git a/Dockerfile b/Dockerfile index 3c7412b..ac6e3af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# RX3-Docker/Kafka Dockerfile +# Rx3-Docker/Kafka Dockerfile #------------------------------------------------------------------------------- ARG IMG_FROM_URL="rx3-docker/java:latest" @@ -17,8 +17,14 @@ LABEL maintainer=${IMG_MAINTAINER} ARG KAFKA_PORT -ARG KAFKA_HOME="/opt/appl/kafka" +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 #--------------------------------------------------------------------------------------------------- @@ -27,32 +33,36 @@ ARG KAFKAD='#!/bin/bash usermod -u ${KAFKA_UID} kafka \n\ groupmod -g ${KAFKA_GID} kafka \n\ \n\ -chown -R kafka:kafka '${KAFKA_LIB}' '${KAFKA_LOG}' \n\ +if [[ ! -f "'${KAFKA_LIB}'/meta.properties" ]] \n\ +then \n\ + cd '${KAFKA_HOME}' \n\ \n\ -cd '${KAFKA_HOME}' \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\ -KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)" \n\ -bin/kafka-storage.sh format --standalone -t \$KAFKA_CLUSTER_ID -c config/kraft/reconfig-server.properties' +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' +command='${KAFKA_HOME}'/bin/kafka-server-start.sh config/kraft/reconfig-server.properties \n\ +user=kafka' #--------------------------------------------------------------------------------------------------- -RUN urpmi --force wget \ - && wget -q -O /tmp/kafka.tgz https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz \ - && mkdir -p /opt/appl \ - && cd /opt/appl \ - && tar xf /tmp/kafka.tgz \ - && mv kafka* kafka \ - && rm /tmp/kafka.tgz \ - && 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 +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%^log.dirs=/tmp/kraft-combined-logs%log.dirs=${KAFKA_LIB}%" ${KAFKA_CONFIG} \ + && 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} diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index 5151a4e..26b0b9e 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -1,5 +1,5 @@ ------------------------------------------------------------------------------------------------------------------------------------ -Rx3-Docker/Kafka V 1.0.0 - A. GIBERT - 2024/11/xx +Rx3-Docker/Kafka V 1.0.0 - A. GIBERT - 2024/11/24 ------------------------------------------------------------------------------------------------------------------------------------ - Initial release, diff --git a/compose.yaml b/compose.yaml index 5efa73b..d2380de 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,4 +1,4 @@ -# Rx3 Proto Docker Image +# Rx3-Docker/Kafka Docker Image #------------------------------------------------------------------------------- name: ${HOST_NAME_PREFIX} @@ -7,30 +7,30 @@ services: #------------------------------------------------------------------------------- - kafka: - container_name: ${KAFKA_HOST_NAME} - hostname: ${KAFKA_HOST_NAME} + topic-server: + container_name: ${TS_HOST_NAME} + hostname: ${TS_HOST_NAME} - image: ${KAFKA_IMG_URL} + image: ${TS_IMG_URL} build: args: - IMG_NAME: ${KAFKA_IMG_URL} - IMG_NAME_FULL: ${KAFKA_IMG_NAME_FULL} - IMG_VERSION: ${KAFKA_IMG_VERSION} - IMG_MAINTAINER: ${KAFKA_IMG_MAINTAINER} - IMG_FROM_URL: ${KAFKA_IMG_FROM_URL} + IMG_NAME: ${TS_IMG_URL} + IMG_NAME_FULL: ${TS_IMG_NAME_FULL} + IMG_VERSION: ${TS_IMG_VERSION} + IMG_MAINTAINER: ${TS_IMG_MAINTAINER} + IMG_FROM_URL: ${TS_IMG_FROM_URL} - KAFKA_PORT: ${KAFKA_PORT_MAIN_INT} + KAFKA_PORT: ${TS_PORT_MAIN_INT} restart: unless-stopped environment: - KAFKA_UID: ${KAFKA_USER_ID} - KAFKA_GID: ${KAFKA_GROUP_ID} + KAFKA_UID: ${TS_USER_ID} + KAFKA_GID: ${TS_GROUP_ID} healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:${KAFKA_PORT_MAIN_INT}"] + test: /opt/appl/kafka/bin/kafka-cluster.sh cluster-id --bootstrap-server localhost:${TS_PORT_MAIN_INT} interval: 30s timeout: 10s start_period: 60s @@ -38,11 +38,11 @@ services: retries: 30 volumes: - - ./${KAFKA_LIB_EXT}:${KAFKA_LIB_INT} - - ./${KAFKA_LOG_INIT_EXT}:${KAFKA_LOG_INIT_INT} - - ./${KAFKA_LOG_SV_EXT}:${KAFKA_LOG_SV_INT} - - ./${KAFKA_LOG_MAIN_EXT}:${KAFKA_LOG_MAIN_INT} + - ./${TS_LIB_EXT}:${TS_LIB_INT} + - ./${TS_LOG_INIT_EXT}:${TS_LOG_INIT_INT} + - ./${TS_LOG_SV_EXT}:${TS_LOG_SV_INT} + - ./${TS_LOG_MAIN_EXT}:${TS_LOG_MAIN_INT} ports: - - "127.0.0.1:${KAFKA_PORT_SV_EXT}:${KAFKA_PORT_SV_INT}" - - "127.0.0.1:${KAFKA_PORT_MAIN_EXT}:${KAFKA_PORT_MAIN_INT}" + - "127.0.0.1:${TS_PORT_SV_EXT}:${TS_PORT_SV_INT}" + - "127.0.0.1:${TS_PORT_MAIN_EXT}:${TS_PORT_MAIN_INT}" diff --git a/env.dist b/env.dist index 168045d..27f633f 100644 --- a/env.dist +++ b/env.dist @@ -20,15 +20,18 @@ ORG_URL_PREFIX="${ORG_REGISTRY}/${ORG_NAME}" HOST_NAME_PREFIX="" PORT_ENV_OFFSET=0 + +PORT_SV_INT=9001 PORT_SV_OFFSET=1000 -#------------------+----------+--------------------+--------------------------+------------------------------------------+------------+--------------------+---------------+------------+--------------+------------+-------+-------+-------+-------+--------------+--------------+ -# | Variable | Target Image | From Image | Module | Main Port | Admin Port | User | Group | -# | Prefix | URL Prefix | Name | Name Full + Version | URL Prefix | Name + Version | Name | Version | Ext | Int | Ext | Int | Name / Id | Name / Id | -#------------------+----------+--------------------+--------------------------+------------------------------------------+------------+--------------------+---------------+------------+--------------+------------+-------+-------+-------+-------+--------------+--------------+ -docker_service_add KAFKA ${ORG_URL_PREFIX} kafka "Rx3-Docker/Kafka Docker Image" 1.0.0-mga9 ${ORG_URL_PREFIX} java 1.1.0-mga9 - - 9092 9092 - - apache apache +#------------------+----------+--------------------------+--------------------+------------------+-------------------------------+-----------------+--------------------+---------------+------------+--------------+------------+-------+-------+-------+-------+--------------+--------------+ +# | Variable | Service | Target Image | From Image | Module | Main Port | Admin Port | User | Group | +# | Prefix | Name | URL Prefix | Name | Name Full | Version | URL Prefix | Name | Version | Name | Version | Ext | Int | Ext | Int | Name / Id | Name / Id | +#------------------+----------+--------------------------+--------------------+------------------+-------------------------------+-----------------+--------------------+---------------+------------+--------------+------------+-------+-------+-------+-------+--------------+--------------+ + +docker_service_add TS topic-server ${ORG_URL_PREFIX} kafka "Rx3-Docker/Kafka" 1.0.0-mga9 ${ORG_URL_PREFIX} java 1.1.0-mga9 - - 9092 9092 - - apache apache