1
# Licensed to the Apache Software Foundation (ASF) under one or more
2
# contributor license agreements. See the NOTICE file distributed with
3
# this work for additional information regarding copyright ownership.
4
# The ASF licenses this file to You under the Apache License, Version 2.0
5
# (the "License"); you may not use this file except in compliance with
6
# the License. You may obtain a copy of the License at
8
# http://www.apache.org/licenses/LICENSE-2.0
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS,
12
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
# See the License for the specific language governing permissions and
14
# limitations under the License.
16
FROM ghcr.io/graalvm/graalvm-community:21 AS build-native-image
22
ENV KAFKA_URL=$kafka_url
23
ENV NATIVE_IMAGE_PATH="native-image"
24
ENV KAFKA_DIR="/app/kafka"
25
ENV NATIVE_CONFIGS_DIR="/app/native-image-configs"
26
ENV KAFKA_LIBS_DIR="$KAFKA_DIR/libs"
27
ENV TARGET_PATH="$KAFKA_DIR/kafka.Kafka"
29
COPY native-image-configs $NATIVE_CONFIGS_DIR
30
COPY native_command.sh native_command.sh
32
RUN mkdir $KAFKA_DIR; \
33
microdnf install wget; \
34
wget -nv -O kafka.tgz "$KAFKA_URL"; \
35
wget -nv -O kafka.tgz.asc "$KAFKA_URL.asc"; \
36
tar xfz kafka.tgz -C $KAFKA_DIR --strip-components 1; \
37
wget -nv -O KEYS https://downloads.apache.org/kafka/KEYS; \
39
gpg --batch --verify kafka.tgz.asc kafka.tgz; \
41
# Build the native-binary of the apache kafka using graalVM native-image.
42
/app/native_command.sh $NATIVE_IMAGE_PATH $NATIVE_CONFIGS_DIR $KAFKA_LIBS_DIR $TARGET_PATH
51
LABEL org.label-schema.name="kafka" \
52
org.label-schema.description="Apache Kafka" \
53
org.label-schema.build-date="${build_date}" \
54
org.label-schema.vcs-url="https://github.com/apache/kafka" \
55
maintainer="Apache Kafka"
58
apk add --no-cache gcompat ; \
59
apk add --no-cache bash ; \
60
mkdir -p /etc/kafka/docker /mnt/shared/config /opt/kafka/config /etc/kafka/secrets ; \
61
adduser -h /home/appuser -D --shell /bin/bash appuser ; \
62
chown appuser:root -R /etc/kafka /opt/kafka /mnt/shared/config ; \
63
chmod -R ug+w /etc/kafka /opt/kafka /mnt/shared/config ;
65
COPY --chown=appuser:root --from=build-native-image /app/kafka/kafka.Kafka /opt/kafka/
66
COPY --chown=appuser:root --from=build-native-image /app/kafka/config/kraft/server.properties /etc/kafka/docker/
67
COPY --chown=appuser:root --from=build-native-image /app/kafka/config/log4j.properties /etc/kafka/docker/
68
COPY --chown=appuser:root --from=build-native-image /app/kafka/config/tools-log4j.properties /etc/kafka/docker/
69
COPY --chown=appuser:root resources/common-scripts /etc/kafka/docker/
70
COPY --chown=appuser:root launch /etc/kafka/docker/
74
VOLUME ["/etc/kafka/secrets", "/mnt/shared/config"]
76
CMD ["/etc/kafka/docker/run"]