使用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
bannerAds