我正試着裝一個卡夫卡服務器。對於卡夫卡服務器正常啓動順序是這樣的:如何訂購Docker容器的Kafka啓動shell腳本?
A: start Zookeeper server
B: start Broker server
C: create topic
項目A
和B
是長時間運行的過程。並且C
需要等待B
啓動並運行。
所以我寫了一個Dockerfile,與ENTRYPOINT
執行shell腳本用於上述順序:
#!/bin/sh
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties &
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties &
$KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test_topic
不過,我遇到了三個難題運行此建造了碼頭工人圖像時:
- 泊塢窗要求
ENTRYPOINT
進程長時間運行,而上面的腳本沒有。 (只要完成主題創建就會退出) - 代理服務器語句(第二個)是長時間運行的過程。目前我必須把它作爲後臺進程使用結束
&
,因爲否則它後面的語句根本就沒有執行。 (但是使其背景也存在問題:主題創建立即執行,而代理服務器還沒有準備好。) - 我無法將代理服務器語句作爲最後一個長時間運行的進程,因爲主題創建語句必須在創建服務器之後。
什麼可能是安排這個啓動序列的好方法?