使用docker-compose快速搭建Cassandra
以下是一个使用docker-compose快速启动Cassandra的示例和简单说明。
首先,按照以下目录结构创建文件。
sample
┣━ docker
┃ ┗ cassandra
┃ ┗ initdb
┃ ┗ schema.cql
┗ docker-compose.yml
接下来,我们将编写docker-compose.yml文件。
version: '3.3'
services:
cassandra:
image: cassandra:latest
ports:
- 9044:9042
environment:
- CASSANDRA_USER=user
- CASSANDRA_PASSWORD=pass
- MAX_HEAP_SIZE=256M
- HEAP_NEWSIZE=128M
container_name: cassandra
restart: always
volumes:
- ./out/cassandra_data:/var/lib/cassandra
cassandra-load-keyspace:
container_name: cassandra-load-keyspace
image: cassandra:latest
depends_on:
- cassandra
volumes:
- ./docker/cassandra/initdb/schema.cql:/schema.cql
command: /bin/bash -c "sleep 60 && echo loading cassandra keyspace && cqlsh cassandra -f /schema.cql"
Cassandra容器是一个直接启动Cassandra的容器。
cassandra-load-keyspace容器将测试用模式流式传输到已启动的Cassandra容器中。
由于Cassandra启动需要时间,所以在等待60秒后才开始执行cql命令。
DROP KEYSPACE IF EXISTS test;
CREATE KEYSPACE test WITH replication = {
'class': 'SimpleStrategy',
'replication_factor' : 1
};
USE test;
CREATE TABLE test_table (
id text PRIMARY KEY,
data text,
update_time timestamp
) WITH default_time_to_live = 31536000;
INSERT INTO test.test_table (id, data, update_time)
VALUES('test_id', 'text', '2019-09-10T11:21:59.001+0000');
直接通过访问容器启动cqlsh的命令。
docker exec -it cassandra cqlsh