{"id":27974583,"url":"https://github.com/strapdata/docker-elassandra","last_synced_at":"2025-07-18T17:31:35.612Z","repository":{"id":102897939,"uuid":"88281154","full_name":"strapdata/docker-elassandra","owner":"strapdata","description":"Docker Image packaging for Elassandra","archived":false,"fork":false,"pushed_at":"2024-12-02T17:27:12.000Z","size":266,"stargazers_count":22,"open_issues_count":3,"forks_count":15,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-08T00:23:42.298Z","etag":null,"topics":["cassandra","docker","elassandra","elasticsearch","kubernetes"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/strapdata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-04-14T15:49:24.000Z","updated_at":"2024-12-02T17:27:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"cb5cbec4-f462-4155-8a96-b1a15cb71495","html_url":"https://github.com/strapdata/docker-elassandra","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/strapdata/docker-elassandra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Fdocker-elassandra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Fdocker-elassandra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Fdocker-elassandra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Fdocker-elassandra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/strapdata","download_url":"https://codeload.github.com/strapdata/docker-elassandra/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strapdata%2Fdocker-elassandra/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265801731,"owners_count":23830460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cassandra","docker","elassandra","elasticsearch","kubernetes"],"created_at":"2025-05-08T00:18:40.285Z","updated_at":"2025-07-18T17:31:35.570Z","avatar_url":"https://github.com/strapdata.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Elassandra docker image\n\n[![Build Status](https://travis-ci.org/strapdata/docker-elassandra.svg?branch=master)](https://travis-ci.org/strapdata/docker-elassandra)\n\nThis Elassandra image is available on [docker hub](https://hub.docker.com/r/strapdata/elassandra/)\n\n[Elassandra](https://github.com/strapdata/elassandra) is a fork of [Elasticsearch](https://github.com/elastic/elasticsearch) modified to run on top of [Apache Cassandra](http://cassandra.apache.org/) in a scalable and resilient peer-to-peer architecture. Elasticsearch code is embedded in Cassanda nodes providing advanced search features on Cassandra tables and Cassandra serve as an Elasticsearch data and configuration store.\n\nCheck-out the [elassandra documentation](http://doc.elassandra.io/en/latest) for detailed instructions.\n\nCommercial support is available from [Strapdata](https://www.strapdata.com).\n\n## Basic usage\n\n```bash\ndocker pull strapdata/elassandra\n```\n\n#### Start a single-node cluster\n\n```bash\ndocker run --name my-elassandra strapdata/elassandra\n```\n\n#### Connect with cqlsh\n\n```bash\ndocker exec -it my-elassandra cqlsh\n```\n\nor :\n\n```bash\ndocker run -it --link my-elassandra --rm strapdata/elassandra cqlsh my-elassandra\n```\n\n\n#### Connect to Elasticsearch API with curl\n\n```bash\ndocker exec -it my-elassandra curl localhost:9200\n```\n\nor :\n\n```bash\ndocker run -it --link my-elassandra --rm strapdata/elassandra curl my-elassandra:9200\n```\n\n#### Connect to Cassandra nodetool\n\n```bash\ndocker exec -it my-elassandra nodetool status\n```\n\n#### Exposed ports\n\n* 7000: Intra-node communication\n* 7001: TLS intra-node communication\n* 7199: JMX\n* 9042: CQL\n* 9142: encrypted CQL\n* 9160: thrift service\n* 9200: ElasticSearch HTTP\n* 9300: ElasticSearch transport\n\n#### Volumes\n\n* /var/lib/cassandra\n\n## Advanced Usage\n\nThis image is a fork of the [Cassandra  \"Official Image\"](https://github.com/docker-library/cassandra) modified to run Elassandra.\n\nWe added some more features to the images, described below.\n\n### Logging\n\nElassandra logging is configured with the file [logback.xml](./logback.xml).\nIt is parametrized with environment variables and thus allows to manage debug levels from your docker env section. \n\n```\nLOGBACK_org_apache_cassandra\nLOGBACK_org_apache_cassandra_service_CassandraDaemon\nLOGBACK_org_elassandra_shard\nLOGBACK_org_elassandra_indices\nLOGBACK_org_elassandra_index\nLOGBACK_org_elassandra_discovery\nLOGBACK_org_elassandra_cluster_service\nLOGBACK_org_elasticsearch\n```\n\n### cgroup memory limit\n\nIf CASSANDRA_CGROUP_MEMORY_LIMIT is set to **true** (default is **false**), \nadd the following JVM properties to the /etc/cassandra/jvm.options file.\nThis will restrict maximum heap size to cgroup limit.\n\n```\n-XX:+UnlockExperimentalVMOptions\n-XX:+UseCGroupMemoryLimitForHeap \n-XX:MaxRAMFraction=2\n```\n\n### Kubernetes\n\nA **ready_probe.sh** script can be used for readiness probe as follow:\n\n```yaml\n  readinessProbe:\n      exec:\n        command: [ \"/bin/bash\", \"-c\", \"/ready-probe.sh\" ]\n      initialDelaySeconds: 15\n      timeoutSeconds: 5\n```\n\n### Configuration\n\nAll the environment variables that work for configuring the official Cassandra image continue to work here (e.g `CASSANDRA_RPC_ADDRESS`, `CASSANDRA_LISTEN_ADDRESS`...).\n\nBut for convenience, we provide an extended mechanism for configuring almost everything in **cassandra.yaml** and **elasticsearch.yml**, directly from the docker env section.\n\nFor instance, to configure cassandra `num_tokens` and elasticsearch `http.port` we do like this :\n\n```bash\ndocker run \\\n  -e CASSANDRA__num_tokens=16 \\\n  -e ELASTICSEARCH__http__port=9201 \\\n  strapdata/elassandra\n```\n\nNotice that `__` are replaced by `.` in the generated yaml files.\n\nIt does not work to configure yaml arrays, such as cassandra seeds...\n\n### Run cassandra only\n\nTo disable Elasticsearch, set the `CASSANDRA_DAEMON` to `org.apache.cassandra.service.CassandraDaemon`, default is `org.apache.cassandra.service.ElassandraDaemon`.\n\n```bash\ndocker run \\\n  -e CASSANDRA_DAEMON=org.apache.cassandra.service.CassandraDaemon \\\n  strapdata/elassandra\n```\n\n### Init script\n\nEvery `.sh` files found in `/docker-entrypoint-init.sh` will be sourced before to start elassandra.\n\n```bash\ndocker run -v $(pwd)/script.sh:/docker-entrypoint-init.d/script.sh strapdata/elassandra\n```\n\n## Use the build tool\n\nLot of parameters available, see the source [build.sh](./build.sh).\n\n### from a local elassandra repository\n```bash\nREPO_DIR=../path/to/elassandra-repo ./build.sh\n```\n\nWhere repo `REPO_DIR` point to an elassandra repository with debian package assembled.\n\n### from local deb package\n```bash\nPACKAGE_LOCATION=../path/to/elassandra-x.x.x.x.deb ./build.sh\n```\n\n### from an url\n```bash\nPACKAGE_LOCATION=https://some-host.com/path/to/elassandra-x.x.x.x.deb ./build.sh\n```\n\n### from the github release page\n```bash\nRELEASE_NAME=6.2.3.6 ./build.sh\n```\n\nThe github repository is the same as the docker hub repository `REPO_NAME`, but may differs by setting `GITHUB_REPO_NAME`.\n\n### set the commit sha1\n\nUse the env var `ELASSANDRA_COMMIT`. It is inserted in the image as an env var, and it's used as a tag.\n\n### set the registry\n\nUse the env var `DOCKER_REGISTRY`, for instance `DOCKER_REGISTRY=gcr.io`\n\n### change the base image\n\nBy default the image is the official debian stretch, but this is parametrized with the env var `BASE_IMAGE`.\n\nFor instance we make also use of : `launcher.gcr.io/google/debian9:latest`. \n\n### publish to registry\n\nSet `DOCKER_PUBLISH=true` to publish the image (be sure to properly authenticate with the registry).\n\nAdd `DOCKER_RUN_TESTS=true` to run the tests before to publish.\n\n### image tagging\n\nAdd `DOCKER_LATEST=true` to tag the image with the tag `latest`.\n\nAdd `DOCKER_MAJOR_LATEST=true` to tag the image with generic version number (e.g `6`, `6.2`, `6.2.3` rather than just `6.2.3.4`).\n\n### troubleshooting\n\nIf you got errors such as:\n```\ngpg: keyserver receive failed: Cannot assign requested address\n```\n\nYou can solve it by enabling this gpg server multiplexer running on docker :\n```\nwget -qO- 'https://github.com/tianon/pgp-happy-eyeballs/raw/master/hack-my-builds.sh' | bash\n```\n\n## Run the tests\n\nrun all:\n\n`./run.sh strapdata/elassandra:tag`\n\nor with debug output:\n\n`DEBUG=true ./run.sh strapdata/elassandra:tag`\n\nonly run elassandra-basics tests:\n\n`./run.sh -t elassandra-basics strapdata/elassandra:tag`\n\nonly run elassandra-config tests:\n\n`./run.sh -t elassandra-config strapdata/elassandra:tag`\n\n## Kubernetes\n\nTo deploy Elassandra on Kubernetes, see the HELM charts repository available at [https://github.com/strapdata/strapcharts](https://github.com/strapdata/strapcharts)\nor the [Google Cloud Kubernetes Marketplace](https://console.cloud.google.com/marketplace/details/strapdata/elassandra?filter=solution-type:k8s).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrapdata%2Fdocker-elassandra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstrapdata%2Fdocker-elassandra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrapdata%2Fdocker-elassandra/lists"}