-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathdocker-entrypoint.sh
executable file
·66 lines (51 loc) · 2.25 KB
/
docker-entrypoint.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash
_term() {
echo "🚨 Termination signal received...";
kill -TERM "$child" 2>/dev/null
}
trap _term SIGINT SIGTERM
properties_file=/opt/kafka/config/kraft/server.properties;
kafka_addr=localhost:9093;
echo "==> Applying environment variables...";
if [ -z $KRAFT_AUTO_CREATE_TOPICS ]; then
echo "==> Not setting auto.create.topics.enable (default; environment variable not set)."
else
echo "==> Setting auto.create.topics.enable=${KRAFT_AUTO_CREATE_TOPICS}...";
echo "auto.create.topics.enable=${KRAFT_AUTO_CREATE_TOPICS}" >> $properties_file;
fi
if [ -z $KRAFT_CONTAINER_HOST_NAME ]; then
echo "listeners=CONTROLLER://:19092,EXTERNAL://:9093" >> $properties_file;
echo "advertised.listeners=EXTERNAL://localhost:9093" >> $properties_file;
echo "inter.broker.listener.name=EXTERNAL" >> $properties_file;
echo "listener.security.protocol.map=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT" >> $properties_file;
else
echo "listeners=CONTROLLER://:19092,INTERNAL://:9092,EXTERNAL://:9093" >> $properties_file;
echo "advertised.listeners=INTERNAL://${KRAFT_CONTAINER_HOST_NAME}:9092,EXTERNAL://localhost:9093" >> $properties_file;
echo "inter.broker.listener.name=EXTERNAL" >> $properties_file;
echo "listener.security.protocol.map=CONTROLLER:PLAINTEXT,INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT" >> $properties_file;
fi
echo "==> ✅ Environment variables applied.";
echo "==> Setting up Kafka storage...";
export suuid=$(./bin/kafka-storage.sh random-uuid);
./bin/kafka-storage.sh format -t $suuid -c ./config/kraft/server.properties;
echo "==> ✅ Kafka storage setup.";
echo "==> Starting Kafka server...";
./bin/kafka-server-start.sh ./config/kraft/server.properties &
child=$!
echo "==> ✅ Kafka server started.";
if [ -z $KRAFT_CREATE_TOPICS ]; then
echo "==> No topic requested for creation.";
else
echo "==> Creating topics...";
./wait-for-it.sh $kafka_addr;
pc=1
if [ $KRAFT_PARTITIONS_PER_TOPIC ]; then
pc=$KRAFT_PARTITIONS_PER_TOPIC
fi
for i in $(echo $KRAFT_CREATE_TOPICS | sed "s/,/ /g")
do
./bin/kafka-topics.sh --create --topic "$i" --partitions "$pc" --replication-factor 1 --bootstrap-server $kafka_addr;
done
echo "==> ✅ Requested topics created.";
fi
wait "$child";