entrypoint.sh
には、Cassandraを必要とするさまざまなcqlshコマンドが含まれています。 script.sh
のようなものがなければ、Cassandraには起動に時間がないため、cqlshコマンドは失敗します。ローカルで以下を実行すると、すべてが正しく動作するように見えます。しかし、Docker経由で実行すると、script.sh
は決して終了しません。言い換えれば、$status
はhereが述べたようにまた、私は、until cqlsh -e 'some code'; do ..
ような何かを行うことができます1から0Docker DBが実行中であることを確認する
Dockerfile
FROM cassandra
RUN apt-get update && apt-get install -y netcat
RUN mkdir /dir
ADD ./scripts /dir/scripts
RUN /bin/bash -c 'service cassandra start'
RUN /bin/bash -c '/dir/scripts/script.sh'
RUN /bin/bash -c '/dir/scripts/entrypoint.sh'
script.sh
#!/bin/bash
set -e
cmd="[email protected]"
status=$(nc -z localhost 9042; echo $?)
echo $status
while [ $status != 0 ]
do
sleep 3s
status=$(nc -z localhost 9042; echo $?)
echo $status
done
exec $cmd
に変わることはありませんpsqlのために、それは私のために働くようには思われません。どのように問題に近づくのが最善か。
これは機能します。ヘルプをよろしくお願いいたします。 – datasci