如何在cassandra db dockerfile上执行healthcheck

hlswsv35  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(362)

所以我需要创建一个带有keyspace的cassandra的docker图像。所以我做了这个docker文件

FROM cassandra

WORKDIR /usr/app
COPY script.cql ./script.cql
COPY entrypoint-wrap.sh  ./entrypoint-wrap.sh

CMD ["cassandra", "-f"]
RUN bash entrypoint-wrap.sh

script.cql包含

CREATE KEYSPACE project WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

我想运行这个脚本


# !/bin/bash

 echo "checkcqlsh"
program=no
while  [ $program = no ]
  do 
  if ! [ -x "$(command -v cqlsh)" ]; then
  echo 'Error: cqlsh is not included.'
  program=no
  else 
  program=yes
  cqlsh -f script.cql 
  fi
done

但当它检查 if 条件由于db尚未启动的错误,映像生成停止。如何检查cassandra数据库是否正常运行?

4szc88ey

4szc88ey1#

CMD 然后 RUN 不会工作,因为它们在不同的生命周期执行。
一种方法是有一个自定义入口点,它将在后台启动cassandra,等待它联机,应用模式更改,然后无限期地等待,或者直到 SIGTERM (等待信号更好,因为它可以让Cassandra清楚地关机)。
另一种方法-在构建时预初始化容器,类似于:
从Cassandra的背景开始 RUN 等待它启动,然后应用架构更改
终止cassandra
那就正常了 cassandra -f 将作为 CMD 命令。
datastax的jiraforjava驱动程序中提供了这样一个例子,并且链接到一个包含dockerfile+脚本的gist。

相关问题