parent
372c681450
commit
0ba00acf34
|
|
@ -0,0 +1,53 @@
|
|||
FROM bitnami/minideb-extras:stretch-r106
|
||||
LABEL maintainer "Bitnami <containers@bitnami.com>"
|
||||
|
||||
ENV BITNAMI_PKG_CHMOD="-R g+rwX" \
|
||||
HOME="/"
|
||||
|
||||
# Install required system packages and dependencies
|
||||
RUN install_packages libblkid1 libbsd0 libc6 libffi6 libgcc1 libglib2.0-0 libmount1 libpcre3 libselinux1 libstdc++6 libuuid1 libx11-6 libxau6 libxcb1 libxdmcp6 libxext6 zlib1g
|
||||
RUN bitnami-pkg install java-1.8.181-1 --checksum 66bba4b4a2647f981339d306da796905c222057c4277a5ef045e079981a404f4
|
||||
RUN bitnami-pkg unpack kafka-2.0.0-0 --checksum 0f0e51cca3ca7b4fa864ad3a7ab60655203675fb358d44be65e6422bb487316a
|
||||
|
||||
COPY rootfs /
|
||||
ENV ALLOW_PLAINTEXT_LISTENER="no" \
|
||||
BITNAMI_APP_NAME="kafka" \
|
||||
BITNAMI_IMAGE_VERSION="2.0.0-debian-9-r0" \
|
||||
KAFKA_ADVERTISED_LISTENERS="PLAINTEXT://:9092" \
|
||||
KAFKA_BROKER_ID="-1" \
|
||||
KAFKA_BROKER_PASSWORD="bitnami" \
|
||||
KAFKA_BROKER_USER="user" \
|
||||
KAFKA_CERTIFICATE_PASSWORD="" \
|
||||
KAFKA_DELETE_TOPIC_ENABLE="false" \
|
||||
KAFKA_HEAP_OPTS="-Xmx1024m -Xms1024m" \
|
||||
KAFKA_INTER_BROKER_PASSWORD="bitnami" \
|
||||
KAFKA_INTER_BROKER_USER="admin" \
|
||||
KAFKA_LISTENERS="PLAINTEXT://:9092" \
|
||||
KAFKA_LOGS_DIRS="/opt/bitnami/kafka/data" \
|
||||
KAFKA_LOG_FLUSH_INTERVAL_MESSAGES="10000" \
|
||||
KAFKA_LOG_FLUSH_INTERVAL_MS="1000" \
|
||||
KAFKA_LOG_MESSAGE_FORMAT_VERSION="" \
|
||||
KAFKA_LOG_RETENTION_BYTES="1073741824" \
|
||||
KAFKA_LOG_RETENTION_CHECK_INTERVALS_MS="300000" \
|
||||
KAFKA_LOG_RETENTION_HOURS="168" \
|
||||
KAFKA_MAX_MESSAGE_BYTES="1000012" \
|
||||
KAFKA_NUM_IO_THREADS="8" \
|
||||
KAFKA_NUM_NETWORK_THREADS="3" \
|
||||
KAFKA_NUM_PARTITIONS="1" \
|
||||
KAFKA_NUM_RECOVERY_THREADS_PER_DATA_DIR="1" \
|
||||
KAFKA_PORT_NUMBER="9092" \
|
||||
KAFKA_SEGMENT_BYTES="1073741824" \
|
||||
KAFKA_SOCKET_RECEIVE_BUFFER_BYTES="102400" \
|
||||
KAFKA_SOCKET_REQUEST_MAX_BYTES="104857600" \
|
||||
KAFKA_SOCKET_SEND_BUFFER_BYTES="102400" \
|
||||
KAFKA_ZOOKEEPER_CONNECT="localhost:2181" \
|
||||
KAFKA_ZOOKEEPER_CONNECT_TIMEOUT_MS="6000" \
|
||||
KAFKA_ZOOKEEPER_PASSWORD="" \
|
||||
KAFKA_ZOOKEEPER_USER="" \
|
||||
PATH="/opt/bitnami/java/bin:/opt/bitnami/kafka/bin:$PATH"
|
||||
|
||||
EXPOSE 9092
|
||||
|
||||
USER 1001
|
||||
ENTRYPOINT ["/app-entrypoint.sh"]
|
||||
CMD ["/run.sh"]
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
version: '2'
|
||||
|
||||
services:
|
||||
zookeeper:
|
||||
image: 'bitnami/zookeeper:latest'
|
||||
ports:
|
||||
- '2181:2181'
|
||||
volumes:
|
||||
- 'zookeeper_data:/bitnami'
|
||||
environment:
|
||||
- ALLOW_ANONYMOUS_LOGIN=yes
|
||||
kafka:
|
||||
image: 'bitnami/kafka:2'
|
||||
ports:
|
||||
- '9092:9092'
|
||||
volumes:
|
||||
- 'kafka_data:/bitnami'
|
||||
environment:
|
||||
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
|
||||
- ALLOW_PLAINTEXT_LISTENER=yes
|
||||
|
||||
volumes:
|
||||
zookeeper_data:
|
||||
driver: local
|
||||
kafka_data:
|
||||
driver: local
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
. /opt/bitnami/base/functions
|
||||
. /opt/bitnami/base/helpers
|
||||
|
||||
print_welcome_page
|
||||
|
||||
if [[ "$1" == "nami" && "$2" == "start" ]] || [[ "$1" == "/run.sh" ]]; then
|
||||
. /init.sh
|
||||
nami_initialize kafka
|
||||
info "Starting kafka... "
|
||||
fi
|
||||
|
||||
exec tini -- "$@"
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
##
|
||||
## @brief Helper function to show an error when KAFKA_LISTENERS does not configure a secure listener
|
||||
## param $1 Input name
|
||||
##
|
||||
plaintext_listener_error() {
|
||||
error "The $1 environment variable does not set a secure listener. Set the environment variable ALLOW_PLAINTEXT_LISTENER=yes to allow the container to be started with a plaintext listener. This is recommended only for development."
|
||||
exit 1
|
||||
}
|
||||
|
||||
##
|
||||
## @brief Helper function to show a warning when the ALLOW_PLAINTEXT_LISTENER flag is enabled
|
||||
##
|
||||
plaintext_listener_enabled_warn() {
|
||||
warn "You set the environment variable ALLOW_PLAINTEXT_LISTENER=${ALLOW_PLAINTEXT_LISTENER}. For safety reasons, do not use this flag in a production environment."
|
||||
}
|
||||
|
||||
|
||||
# Validate passwords
|
||||
if [[ "$ALLOW_PLAINTEXT_LISTENER" =~ ^(yes|Yes|YES)$ ]]; then
|
||||
plaintext_listener_enabled_warn
|
||||
elif [[ ! "$KAFKA_LISTENERS" =~ SASL_SSL ]]; then
|
||||
plaintext_listener_error KAFKA_LISTENERS
|
||||
fi
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"allowPlaintextListener": "{{$global.env.ALLOW_PLAINTEXT_LISTENER}}",
|
||||
"kafkaAdvertisedListeners": "{{$global.env.KAFKA_ADVERTISED_LISTENERS}}",
|
||||
"kafkaBrokerId": "{{$global.env.KAFKA_BROKER_ID}}",
|
||||
"kafkaBrokerPassword": "{{$global.env.KAFKA_BROKER_PASSWORD}}",
|
||||
"kafkaBrokerUser": "{{$global.env.KAFKA_BROKER_USER}}",
|
||||
"kafkaCertificatePassword": "{{$global.env.KAFKA_CERTIFICATE_PASSWORD}}",
|
||||
"kafkaDeleteTopicEnable": "{{$global.env.KAFKA_DELETE_TOPIC_ENABLE}}",
|
||||
"kafkaHeapOpts": "{{$global.env.KAFKA_HEAP_OPTS}}",
|
||||
"kafkaInterBrokerPassword": "{{$global.env.KAFKA_INTER_BROKER_PASSWORD}}",
|
||||
"kafkaInterBrokerUser": "{{$global.env.KAFKA_INTER_BROKER_USER}}",
|
||||
"kafkaListeners": "{{$global.env.KAFKA_LISTENERS}}",
|
||||
"kafkaLogFlushIntervalMessages": "{{$global.env.KAFKA_LOG_FLUSH_INTERVAL_MESSAGES}}",
|
||||
"kafkaLogFlushIntervalMs": "{{$global.env.KAFKA_LOG_FLUSH_INTERVAL_MS}}",
|
||||
"kafkaLogMessageFormatVersion": "{{$global.env.KAFKA_LOG_MESSAGE_FORMAT_VERSION}}",
|
||||
"kafkaLogRetentionBytes": "{{$global.env.KAFKA_LOG_RETENTION_BYTES}}",
|
||||
"kafkaLogRetentionCheckIntervalMs": "{{$global.env.KAFKA_LOG_RETENTION_CHECK_INTERVALS_MS}}",
|
||||
"kafkaLogRetentionHours": "{{$global.env.KAFKA_LOG_RETENTION_HOURS}}",
|
||||
"kafkaLogSegmentBytes": "{{$global.env.KAFKA_SEGMENT_BYTES}}",
|
||||
"kafkaLogsDirs": "{{$global.env.KAFKA_LOGS_DIRS}}",
|
||||
"kafkaMaxMessageBytes": "{{$global.env.KAFKA_MAX_MESSAGE_BYTES}}",
|
||||
"kafkaNumIoThreads": "{{$global.env.KAFKA_NUM_IO_THREADS}}",
|
||||
"kafkaNumNetworkThreads": "{{$global.env.KAFKA_NUM_NETWORK_THREADS}}",
|
||||
"kafkaNumPartitions": "{{$global.env.KAFKA_NUM_PARTITIONS}}",
|
||||
"kafkaNumRecoveryThreadsPerDataDir": "{{$global.env.KAFKA_NUM_RECOVERY_THREADS_PER_DATA_DIR}}",
|
||||
"kafkaPort": "{{$global.env.KAFKA_PORT_NUMBER}}",
|
||||
"kafkaSocketReceiveBufferBytes": "{{$global.env.KAFKA_SOCKET_RECEIVE_BUFFER_BYTES}}",
|
||||
"kafkaSocketRequestMaxBytes": "{{$global.env.KAFKA_SOCKET_REQUEST_MAX_BYTES}}",
|
||||
"kafkaSocketSendBufferBytes": "{{$global.env.KAFKA_SOCKET_SEND_BUFFER_BYTES}}",
|
||||
"kafkaZookeeperConnect": "{{$global.env.KAFKA_ZOOKEEPER_CONNECT}}",
|
||||
"kafkaZookeeperConnectionTimeoutMs": "{{$global.env.KAFKA_ZOOKEEPER_CONNECT_TIMEOUT_MS}}",
|
||||
"kafkaZookeeperPassword": "{{$global.env.KAFKA_ZOOKEEPER_PASSWORD}}",
|
||||
"kafkaZookeeperUser": "{{$global.env.KAFKA_ZOOKEEPER_USER}}"
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
#!/bin/bash
|
||||
. /opt/bitnami/base/functions
|
||||
. /opt/bitnami/base/helpers
|
||||
|
||||
|
||||
USER=kafka
|
||||
KAFKA_HOME="/opt/bitnami/kafka"
|
||||
START_COMMAND="${KAFKA_HOME}/bin/kafka-server-start.sh -daemon ${KAFKA_HOME}/config/server.properties && ps ax | grep -i 'java.*kafka' | grep -v grep | awk '{print \$1}' > ${KAFKA_HOME}/tmp/kafka.pid && tail -f ${KAFKA_HOME}/logs/server.log"
|
||||
|
||||
if [[ -z "$KAFKA_BROKER_ID" ]]; then
|
||||
if [[ -n "$BROKER_ID_COMMAND" ]]; then
|
||||
export KAFKA_BROKER_ID=$(eval $BROKER_ID_COMMAND)
|
||||
else
|
||||
# By default auto allocate broker ID
|
||||
export KAFKA_BROKER_ID=-1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$KAFKA_LISTENERS" =~ SASL ]]; then
|
||||
export KAFKA_OPTS="-Djava.security.auth.login.config=${KAFKA_HOME}/conf/kafka_jaas.conf"
|
||||
fi
|
||||
|
||||
# If container is started as `root` user
|
||||
if [ $EUID -eq 0 ]; then
|
||||
gosu ${USER} touch ${KAFKA_HOME}/logs/server.log
|
||||
exec gosu ${USER} bash -c "${START_COMMAND}"
|
||||
else
|
||||
touch ${KAFKA_HOME}/logs/server.log
|
||||
exec bash -c "${START_COMMAND}"
|
||||
fi
|
||||
|
|
@ -45,8 +45,10 @@ services:
|
|||
Learn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags [in our documentation page](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/).
|
||||
|
||||
|
||||
* [`2-debian-9`, `2.0.0-debian-9-r0`, `2`, `2.0.0`, `2.0.0-r0`, `latest` (2/Dockerfile)](https://github.com/bitnami/bitnami-docker-kafka/blob/2.0.0-debian-9-r0/2/Dockerfile)
|
||||
* [`1-ol-7`, `1.1.1-ol-7-r16` (1/ol-7/Dockerfile)](https://github.com/bitnami/bitnami-docker-kafka/blob/1.1.1-ol-7-r16/1/ol-7/Dockerfile)
|
||||
* [`1-debian-9`, `1.1.1-debian-9-r10`, `1`, `1.1.1`, `1.1.1-r10`, `latest` (1/Dockerfile)](https://github.com/bitnami/bitnami-docker-kafka/blob/1.1.1-debian-9-r10/1/Dockerfile)
|
||||
* [`1-debian-9`, `1.1.1-debian-9-r10`, `1`, `1.1.1`, `1.1.1-r10` (1/Dockerfile)](https://github.com/bitnami/bitnami-docker-kafka/blob/1.1.1-debian-9-r10/1/Dockerfile)
|
||||
* [`2-ol-7`, `0.0.0-ol-7-r0` (2/ol-7/Dockerfile)](https://github.com/bitnami/bitnami-docker-kafka/blob/0.0.0-ol-7-r0/2/ol-7/Dockerfile)
|
||||
|
||||
Subscribe to project updates by watching the [bitnami/kafka GitHub repo](https://github.com/bitnami/bitnami-docker-kafka).
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ jobs:
|
|||
docker:
|
||||
- image: docker:17.06.0-ce-git
|
||||
environment:
|
||||
RELEASE_SERIES_LIST: "1"
|
||||
LATEST_STABLE: "1"
|
||||
RELEASE_SERIES_LIST: "1,2"
|
||||
LATEST_STABLE: "2"
|
||||
DISTRIBUTIONS_LIST: "debian-9,ol-7"
|
||||
IMAGE_NAME: kafka
|
||||
CHART_NAME: kafka
|
||||
|
|
|
|||
Loading…
Reference in New Issue