我想创建一个dockerfile,它可以在图像启动时使用键空间和模式构建Cassandra映像.
在一般情况下,你如何创建一个Dockerfile,将建立包括一些步骤中不能真正直到容器完成正在运行,至少在第一时间内进行拍摄?
现在,我有两个步骤:从现有的cassandra Dockerfile构建cassandra映像,该文件将带有CQL模式文件的卷映射到临时目录,然后使用cqlsh运行docker exec以在映像启动后导入模式容器.
但这不会创建一个带有架构的图像 - 只是一个容器.该容器可以保存为图像,但这很麻烦.
    docker run --name $CASSANDRA_NAME -d \
        -h $CASSANDRA_NAME \
        -v $CASSANDRA_DATA_DIR:/data \
        -v $CASSANDRA_DIR/target:/tmp/schema \
        tobert/cassandra:2.1.7
然后
docker exec $CASSANDRA_NAME cqlsh  -f /tmp/schema/create_keyspace.cql
docker exec $CASSANDRA_NAME cqlsh  -f /tmp/schema/schema01.cql
# etc
这有效,但它使得无法使用像Docker这样的工具,因为链接的容器/服务也将启动并期望架构到位.
我看到了一个企图在那里为试图在构建过程中Dockerfile后台启动,然后运行cqlsh卡桑德拉的过程,但我不认为工作太清楚了.
好的,我遇到了这个问题,有人建议我应对一些策略:
创建一个shell脚本,该脚本将用作启动Cassandra的最后一个命令
一种。用$ CASSANDRA_HOME / bin / cassandra启动cassandra
b。如果有$ CASSANDRA_HOME / data / data / your_keyspace-xxxx文件夹并且它不为空,则无需执行其他操作
C。其他
1. sleep some time to allow the server to listen on port 9042
2. when port 9042 is listening, execute the .cql script to load csv files
我发现此过程相当繁琐,但似乎没有其他解决方法。对于Cassandra动手实验,我发现使用Vagrant和Ansible创建VM映像更加容易。
| 归档时间: | 
 | 
| 查看次数: | 3699 次 | 
| 最近记录: |