我想知道是否有人试图建立一个默认键空间Cassandradocker形象,我曾试图这样做的建设时间,但它没有工作,因为Cassandra是没有在该阶段运行。类似于这样:
FROM cassandra:2.0
COPY ../somewhere/keyspace_definition.txt /src/keyspace_definition.txt
RUN /usr/bin/cqlsh -f /src/keyspace_definition.txt
我的新方法是从entrypoint脚本开始,但是,如果其他人有更好的想法,我现在就想这么做。
快乐航运:d
5条答案
按热度按时间mkshixfv1#
我觉得有趣的是,还没有人对此作出回应。你可以理解mysql是在一个容器中运行的。
请参阅此链接:http://www.luiselizondo.net/a-tutorial-on-how-to-use-mysql-with-docker/
放入该目录中的任何脚本都将通过/entrypoint.sh脚本执行。看起来cassandra的entrypoint.sh脚本还不支持这个。然而!它可以!
lsmepo6l2#
今天解决了这个问题。生成图像,覆盖默认的cassandra
docker-entrypoint.sh
一个被修改,附加,就在前面exec "$@"
```for f in docker-entrypoint-initdb.d/*; do
case "$f" in
*.sh) echo "$0: running $f"; . "$f" ;;
*.cql) echo "$0: running $f" && until cqlsh -f "$f"; do >&2 echo "Cassandra is unavailable - sleeping"; sleep 2; done & ;;
*) echo "$0: ignoring $f" ;;
esac
echo
done
wnavrhmk3#
我用这个做决定。我从docker-entrypoint.sh文件中删除了最后一行,并在末尾插入了这些行:
那么就有必要重建docker的形象。
yvt65v4c4#
我正在使用一个spring boot docker容器来访问我的cassandra容器。一切都是由一个dockr组成的。本教程结合以下代码对我很有用。
9rbhqvlz5#
基于@jan oudrincy和@alexander morozov的答案,我构建了一个新的docker映像,它有一个原始的 Package
docker-entrypoint.sh
当环境变量CASSANDRA_KEYSPACE
已设置。它在开发/测试环境中很有用。它不会修改
docker-entrypoint.sh
所以,即使Cassandra基地的形象有任何修改,你只需要重建。dockerfile文件
入口点 Package .sh