-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
137d40c
commit 65eb10b
Showing
25 changed files
with
3,676 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
FROM docker.io/bitnami/minideb:bullseye | ||
LABEL maintainer "Bitnami <[email protected]>" | ||
|
||
ENV HOME="/" \ | ||
OS_ARCH="amd64" \ | ||
OS_FLAVOUR="debian-11" \ | ||
OS_NAME="linux" | ||
|
||
ARG JAVA_EXTRA_SECURITY_DIR="/bitnami/java/extra-security" | ||
|
||
COPY prebuildfs / | ||
# Install required system packages and dependencies | ||
RUN install_packages acl ca-certificates curl gzip libc6 procps tar zlib1g | ||
RUN . /opt/bitnami/scripts/libcomponent.sh && component_unpack "java" "11.0.15-150" --checksum fe6b65886a6b1f545508e272efbf422054ee030c867f94ebec2f93c5518252de | ||
RUN . /opt/bitnami/scripts/libcomponent.sh && component_unpack "gosu" "1.14.0-150" --checksum da4a2f759ccc57c100d795b71ab297f48b31c4dd7578d773d963bbd49c42bd7b | ||
RUN . /opt/bitnami/scripts/libcomponent.sh && component_unpack "wait-for-port" "1.0.3-150" --checksum 1013e2ebbe58e5dc8f3c79fc952f020fc5306ba48463803cacfbed7779173924 | ||
RUN . /opt/bitnami/scripts/libcomponent.sh && component_unpack "render-template" "1.0.3-150" --checksum 8b992a5ee513c5eaca52b19232b21a93588ddf4c4850be4d47c6f19b11d1d90a | ||
RUN . /opt/bitnami/scripts/libcomponent.sh && component_unpack "kafka" "2.8.1-150" --checksum 3994379a01d6f037fbf6a4dcc24cce706f372bdfe131f3115c60bfce3520852f | ||
RUN apt-get update && apt-get upgrade -y && \ | ||
rm -r /var/lib/apt/lists /var/cache/apt/archives | ||
RUN chmod g+rwX /opt/bitnami | ||
RUN ln -s /opt/bitnami/scripts/kafka/entrypoint.sh /entrypoint.sh | ||
RUN ln -s /opt/bitnami/scripts/kafka/run.sh /run.sh | ||
|
||
COPY rootfs / | ||
RUN /opt/bitnami/scripts/java/postunpack.sh | ||
RUN /opt/bitnami/scripts/kafka/postunpack.sh | ||
ENV APP_VERSION="2.8.1" \ | ||
BITNAMI_APP_NAME="kafka" \ | ||
JAVA_HOME="/opt/bitnami/java" \ | ||
PATH="/opt/bitnami/java/bin:/opt/bitnami/common/bin:/opt/bitnami/kafka/bin:$PATH" | ||
|
||
EXPOSE 9092 | ||
|
||
USER 1001 | ||
ENTRYPOINT [ "/opt/bitnami/scripts/kafka/entrypoint.sh" ] | ||
CMD [ "/opt/bitnami/scripts/kafka/run.sh" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
version: '2' | ||
|
||
services: | ||
zookeeper: | ||
image: docker.io/bitnami/zookeeper:3.8 | ||
ports: | ||
- '2181:2181' | ||
volumes: | ||
- 'zookeeper_data:/bitnami' | ||
environment: | ||
- ALLOW_ANONYMOUS_LOGIN=yes | ||
kafka: | ||
image: docker.io/bitnami/kafka:2.8 | ||
ports: | ||
- '9092:9092' | ||
volumes: | ||
- 'kafka_data:/bitnami' | ||
environment: | ||
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 | ||
- ALLOW_PLAINTEXT_LISTENER=yes | ||
depends_on: | ||
- zookeeper | ||
|
||
volumes: | ||
zookeeper_data: | ||
driver: local | ||
kafka_data: | ||
driver: local |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
Bitnami containers ship with software bundles. You can find the licenses under: | ||
/opt/bitnami/nami/COPYING | ||
/opt/bitnami/[name-of-bundle]/licenses/[bundle-version].txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
#!/bin/bash | ||
# | ||
# Bitnami custom library | ||
|
||
# shellcheck disable=SC1091 | ||
|
||
# Load Generic Libraries | ||
. /opt/bitnami/scripts/liblog.sh | ||
|
||
# Constants | ||
BOLD='\033[1m' | ||
|
||
# Functions | ||
|
||
######################## | ||
# Print the welcome page | ||
# Globals: | ||
# DISABLE_WELCOME_MESSAGE | ||
# BITNAMI_APP_NAME | ||
# Arguments: | ||
# None | ||
# Returns: | ||
# None | ||
######################### | ||
print_welcome_page() { | ||
if [[ -z "${DISABLE_WELCOME_MESSAGE:-}" ]]; then | ||
if [[ -n "$BITNAMI_APP_NAME" ]]; then | ||
print_image_welcome_page | ||
fi | ||
fi | ||
} | ||
|
||
######################## | ||
# Print the welcome page for a Bitnami Docker image | ||
# Globals: | ||
# BITNAMI_APP_NAME | ||
# Arguments: | ||
# None | ||
# Returns: | ||
# None | ||
######################### | ||
print_image_welcome_page() { | ||
local github_url="https://github.com/bitnami/bitnami-docker-${BITNAMI_APP_NAME}" | ||
|
||
log "" | ||
log "${BOLD}Welcome to the Bitnami ${BITNAMI_APP_NAME} container${RESET}" | ||
log "Subscribe to project updates by watching ${BOLD}${github_url}${RESET}" | ||
log "Submit issues and feature requests at ${BOLD}${github_url}/issues${RESET}" | ||
log "" | ||
} | ||
|
65 changes: 65 additions & 0 deletions
65
docker/kafka/prebuildfs/opt/bitnami/scripts/libcomponent.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
#!/bin/bash | ||
# | ||
# Library for managing Bitnami components | ||
|
||
# Constants | ||
CACHE_ROOT="/tmp/bitnami/pkg/cache" | ||
DOWNLOAD_URL="https://downloads.bitnami.com/files/stacksmith" | ||
|
||
# Functions | ||
|
||
######################## | ||
# Download and unpack a Bitnami package | ||
# Globals: | ||
# OS_NAME | ||
# OS_ARCH | ||
# OS_FLAVOUR | ||
# Arguments: | ||
# $1 - component's name | ||
# $2 - component's version | ||
# Returns: | ||
# None | ||
######################### | ||
component_unpack() { | ||
local name="${1:?name is required}" | ||
local version="${2:?version is required}" | ||
local base_name="${name}-${version}-${OS_NAME}-${OS_ARCH}-${OS_FLAVOUR}" | ||
local package_sha256="" | ||
local directory="/opt/bitnami" | ||
|
||
# Validate arguments | ||
shift 2 | ||
while [ "$#" -gt 0 ]; do | ||
case "$1" in | ||
-c|--checksum) | ||
shift | ||
package_sha256="${1:?missing package checksum}" | ||
;; | ||
*) | ||
echo "Invalid command line flag $1" >&2 | ||
return 1 | ||
;; | ||
esac | ||
shift | ||
done | ||
|
||
echo "Downloading $base_name package" | ||
if [ -f "${CACHE_ROOT}/${base_name}.tar.gz" ]; then | ||
echo "${CACHE_ROOT}/${base_name}.tar.gz already exists, skipping download." | ||
cp "${CACHE_ROOT}/${base_name}.tar.gz" . | ||
rm "${CACHE_ROOT}/${base_name}.tar.gz" | ||
if [ -f "${CACHE_ROOT}/${base_name}.tar.gz.sha256" ]; then | ||
echo "Using the local sha256 from ${CACHE_ROOT}/${base_name}.tar.gz.sha256" | ||
package_sha256="$(< "${CACHE_ROOT}/${base_name}.tar.gz.sha256")" | ||
rm "${CACHE_ROOT}/${base_name}.tar.gz.sha256" | ||
fi | ||
else | ||
curl --remote-name --silent --show-error --fail "${DOWNLOAD_URL}/${base_name}.tar.gz" | ||
fi | ||
if [ -n "$package_sha256" ]; then | ||
echo "Verifying package integrity" | ||
echo "$package_sha256 ${base_name}.tar.gz" | sha256sum --check - || return "$?" | ||
fi | ||
tar --directory "${directory}" --extract --gunzip --file "${base_name}.tar.gz" --no-same-owner --strip-components=2 || return "$?" | ||
rm "${base_name}.tar.gz" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
#!/bin/bash | ||
# | ||
# Library for managing files | ||
|
||
# shellcheck disable=SC1091 | ||
|
||
# Load Generic Libraries | ||
. /opt/bitnami/scripts/libos.sh | ||
|
||
# Functions | ||
|
||
######################## | ||
# Replace a regex-matching string in a file | ||
# Arguments: | ||
# $1 - filename | ||
# $2 - match regex | ||
# $3 - substitute regex | ||
# $4 - use POSIX regex. Default: true | ||
# Returns: | ||
# None | ||
######################### | ||
replace_in_file() { | ||
local filename="${1:?filename is required}" | ||
local match_regex="${2:?match regex is required}" | ||
local substitute_regex="${3:?substitute regex is required}" | ||
local posix_regex=${4:-true} | ||
|
||
local result | ||
|
||
# We should avoid using 'sed in-place' substitutions | ||
# 1) They are not compatible with files mounted from ConfigMap(s) | ||
# 2) We found incompatibility issues with Debian10 and "in-place" substitutions | ||
local -r del=$'\001' # Use a non-printable character as a 'sed' delimiter to avoid issues | ||
if [[ $posix_regex = true ]]; then | ||
result="$(sed -E "s${del}${match_regex}${del}${substitute_regex}${del}g" "$filename")" | ||
else | ||
result="$(sed "s${del}${match_regex}${del}${substitute_regex}${del}g" "$filename")" | ||
fi | ||
echo "$result" > "$filename" | ||
} | ||
|
||
######################## | ||
# Replace a regex-matching multiline string in a file | ||
# Arguments: | ||
# $1 - filename | ||
# $2 - match regex | ||
# $3 - substitute regex | ||
# Returns: | ||
# None | ||
######################### | ||
replace_in_file_multiline() { | ||
local filename="${1:?filename is required}" | ||
local match_regex="${2:?match regex is required}" | ||
local substitute_regex="${3:?substitute regex is required}" | ||
|
||
local result | ||
local -r del=$'\001' # Use a non-printable character as a 'sed' delimiter to avoid issues | ||
result="$(perl -pe "BEGIN{undef $/;} s${del}${match_regex}${del}${substitute_regex}${del}sg" "$filename")" | ||
echo "$result" > "$filename" | ||
} | ||
|
||
######################## | ||
# Remove a line in a file based on a regex | ||
# Arguments: | ||
# $1 - filename | ||
# $2 - match regex | ||
# $3 - use POSIX regex. Default: true | ||
# Returns: | ||
# None | ||
######################### | ||
remove_in_file() { | ||
local filename="${1:?filename is required}" | ||
local match_regex="${2:?match regex is required}" | ||
local posix_regex=${3:-true} | ||
local result | ||
|
||
# We should avoid using 'sed in-place' substitutions | ||
# 1) They are not compatible with files mounted from ConfigMap(s) | ||
# 2) We found incompatibility issues with Debian10 and "in-place" substitutions | ||
if [[ $posix_regex = true ]]; then | ||
result="$(sed -E "/$match_regex/d" "$filename")" | ||
else | ||
result="$(sed "/$match_regex/d" "$filename")" | ||
fi | ||
echo "$result" > "$filename" | ||
} | ||
|
||
######################## | ||
# Appends text after the last line matching a pattern | ||
# Arguments: | ||
# $1 - file | ||
# $2 - match regex | ||
# $3 - contents to add | ||
# Returns: | ||
# None | ||
######################### | ||
append_file_after_last_match() { | ||
local file="${1:?missing file}" | ||
local match_regex="${2:?missing pattern}" | ||
local value="${3:?missing value}" | ||
|
||
# We read the file in reverse, replace the first match (0,/pattern/s) and then reverse the results again | ||
result="$(tac "$file" | sed -E "0,/($match_regex)/s||${value}\n\1|" | tac)" | ||
echo "$result" > "$file" | ||
} | ||
|
||
######################## | ||
# Wait until certain entry is present in a log file | ||
# Arguments: | ||
# $1 - entry to look for | ||
# $2 - log file | ||
# $3 - max retries. Default: 12 | ||
# $4 - sleep between retries (in seconds). Default: 5 | ||
# Returns: | ||
# Boolean | ||
######################### | ||
wait_for_log_entry() { | ||
local -r entry="${1:-missing entry}" | ||
local -r log_file="${2:-missing log file}" | ||
local -r retries="${3:-12}" | ||
local -r interval_time="${4:-5}" | ||
local attempt=0 | ||
|
||
check_log_file_for_entry() { | ||
if ! grep -qE "$entry" "$log_file"; then | ||
debug "Entry \"${entry}\" still not present in ${log_file} (attempt $((++attempt))/${retries})" | ||
return 1 | ||
fi | ||
} | ||
debug "Checking that ${log_file} log file contains entry \"${entry}\"" | ||
if retry_while check_log_file_for_entry "$retries" "$interval_time"; then | ||
debug "Found entry \"${entry}\" in ${log_file}" | ||
true | ||
else | ||
error "Could not find entry \"${entry}\" in ${log_file} after ${retries} retries" | ||
debug_execute cat "$log_file" | ||
return 1 | ||
fi | ||
} |
Oops, something went wrong.