From eefd67c1db49a6c24bc33452f29670862a57f5e6 Mon Sep 17 00:00:00 2001 From: tzing_t Date: Fri, 15 Mar 2024 09:36:35 +0000 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Ecassandra=E5=AE=B9=E5=99=A8?= =?UTF-8?q?=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cassandra/4.1.4/22.03-lts-sp3/Dockerfile | 22 ++++++ cassandra/README.md | 31 ++++++++ cassandra/doc/image-info.yml | 92 +++++++++++++++++++++++ cassandra/doc/picture/cassandra.png | Bin 0 -> 12863 bytes 4 files changed, 145 insertions(+) create mode 100644 cassandra/4.1.4/22.03-lts-sp3/Dockerfile create mode 100644 cassandra/README.md create mode 100644 cassandra/doc/image-info.yml create mode 100644 cassandra/doc/picture/cassandra.png diff --git a/cassandra/4.1.4/22.03-lts-sp3/Dockerfile b/cassandra/4.1.4/22.03-lts-sp3/Dockerfile new file mode 100644 index 0000000..dd73eea --- /dev/null +++ b/cassandra/4.1.4/22.03-lts-sp3/Dockerfile @@ -0,0 +1,22 @@ +ARG BASE=openeuler/openeuler:22.03-lts-sp3 +FROM ${BASE} + +ARG TARGETARCH +ARG VERSION=4.1.4 + +RUN yum -y install java && \ + yum clean all + +RUN groupadd --system --gid 1000 cassandra && \ + useradd --system --gid cassandra --uid 1000 cassandra + +RUN curl -o /tmp/cassandra-${VERSION}.tar.gz https://dlcdn.apache.org/cassandra/${VERSION}/apache-cassandra-${VERSION}-bin.tar.gz && \ + tar -zxvf /tmp/cassandra-${VERSION}.tar.gz -C /tmp && \ + cd /tmp/apache-cassandra-${VERSION}/bin && \ + rm -rf /tmp/cassandra-${VERSION}.tar.gz + +EXPOSE 7000 7001 7199 9042 9160 + +WORKDIR /tmp/apache-cassandra-${VERSION}/bin + +CMD ["./cassandra", "-f", "-R"] diff --git a/cassandra/README.md b/cassandra/README.md new file mode 100644 index 0000000..908d1ed --- /dev/null +++ b/cassandra/README.md @@ -0,0 +1,31 @@ +# cassandra + +# Quick reference + +- The official cassandra docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/CloudNative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/CloudNative), [openEuler](https://gitee.com/openeuler/community) + +# Build reference + +1. Build images and push: +```shell +docker buildx build -t "openeuler/cassandra:$VERSION" --platform linux/amd64,linux/arm64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +# How to use this image + +```shell +docker run --name cassandra openeuler/cassandra:{TAG} +``` + +# Supported tags and respective Dockerfile links + +- 4.1.4-22.03-lts-sp3: cassandra v4.1.4, openEuler 22.03-LTS-SP3 + +## Operating System +Linux/Unix, ARM64 or x86-64 architecture. \ No newline at end of file diff --git a/cassandra/doc/image-info.yml b/cassandra/doc/image-info.yml new file mode 100644 index 0000000..7cab7bf --- /dev/null +++ b/cassandra/doc/image-info.yml @@ -0,0 +1,92 @@ +name: cassandra +category: database +description: cassandra是一套开源的分布式NoSQL数据库系统。它基于Amazon Dynamo的分布式设计和Google BigTable的数据模型,是一个网络社交云计算方面理想的数据库。 +environment: | + 本应用以容器镜像的方式供用户使用,运行于预置docker的Linux环境。Docker的推荐安装方式如下: + ## apt安装 + ### 1.更新系统软件包依赖 + ``` + sudo spt update + sudo apt install ca-certificates curl gnupg lsb-release + ``` + ### 2.添加Docker官方GPG密钥 + ``` + sudo mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg + sudo chmod a+r /etc/apt/keyrings/docker.gpg + ``` + ### 3.添加Docker官方APT源 + ``` + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + ``` + ### 4.再次更新软件包索引 + ``` + sudo apt update + ``` + ### 5.安装Docker + ``` + sudo apt install docker-ce docker-ce-cli containerd.io + ``` + + ## yum安装 + ### 1.安装yum-utils + ``` + sudo yum install -y yum-utils + ``` + ### 2.添加Docker源 + ``` + sudo yum-config-manager \ + > --add-repo \ + > https://download.docker.com/linux/centos/docker-ce.repo + ``` + ### 3.安装Docker + ``` + sudo yum install -y docker-ce docker-ce-cli containerd.io + ``` + + 注意,在openEuler环境安装docker时,可执行如下命令一键安装 + ``` + yum install -y docker + ``` + + ## 脚本安装 + ### 1.下载安装脚本 + ``` + curl -fsSL https://get.docker.com -o get-docker.sh + ``` + ### 2.使用root权限执行脚本 + ``` + sudo sh get-docker.sh + ``` + 使用脚本安装方式时,如果用户要指定安装的docker版本,需要自行修改`get-docker.sh`的源码内容。 + + ## 验证 + ``` + sudo docker run hello-world + ``` + +download: | + 获取容器镜像 + ``` + docker pull openeuler/cassandra:latest + ``` + +install: | + 启动容器 + ``` + docker run --name cassandra -d openeuler/cassandra:latest + ``` + 用户可根据自身需求,自定义启动选项。 + +license: Apache-2.0 license +similar_packages: + - Redis: 一个使用 ANSI C 编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。 + - Apache Ignite: 一个内存中的数据网格系统,可以提供分布式缓存和计算。 + - Aerospike: 一个高性能的 NoSQL 数据库系统,可以提供高可用性和可扩展性。 + - Couchbase: 一个分布式 NoSQL 数据库系统,可以提供高可用性和高扩展性,同时还提供了 Memcached 兼容接口。 + - Tarantool: 一个内存中的 NoSQL 数据库系统,可以提供高性能和高可用性,同时还提供了 Lua 脚本支持。 +dependency: + - gcc + - make + - libevent-devel + \ No newline at end of file diff --git a/cassandra/doc/picture/cassandra.png b/cassandra/doc/picture/cassandra.png new file mode 100644 index 0000000000000000000000000000000000000000..1616b3d52258c522b6f400ec001939e9138fad75 GIT binary patch literal 12863 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 Y^P~DtCSujM#t?)r@@jImGUgHg50zMD!vFvP literal 0 HcmV?d00001 -- Gitee