bitnami/cassandra
Bitnami container image for Cassandra
50M+
Apache Cassandra is an open source distributed database management system designed to handle large amounts of data across many servers, providing high availability with no single point of failure.
Overview of Apache Cassandra Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.
docker run --name cassandra bitnami/cassandra:latest
You can find the default credentials and available configuration options in the Environment Variables section.
Looking to use Apache Cassandra in production? Try VMware Tanzu Application Catalog, the commercial edition of the Bitnami catalog.
Non-root container images add an extra layer of security and are generally recommended for production environments. However, because they run as a non-root user, privileged tasks are typically off-limits. Learn more about non-root containers in our docs.
Deploying Bitnami applications as Helm Charts is the easiest way to get started with our applications on Kubernetes. Read more about the installation in the Bitnami Apache Cassandra Chart GitHub repository.
Bitnami containers can be used with Kubeapps for deployment and management of Helm Charts in clusters.
Starting December 10th 2024, only the latest stable branch of any container will receive updates in the free Bitnami catalog. To access up-to-date releases for all upstream-supported branches, consider upgrading to Bitnami Premium. Previous versions already released will not be deleted. They are still available to pull from DockerHub.
Please check the Bitnami Premium page in our partner Arrow Electronics for more information.
Dockerfile
linksLearn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags in our documentation page.
You can see the equivalence between the different tags by taking a look at the tags-info.yaml
file present in the branch folder, i.e bitnami/ASSET/BRANCH/DISTRO/tags-info.yaml
.
Subscribe to project updates by watching the bitnami/containers GitHub repo.
The recommended way to get the Bitnami Apache Cassandra Docker Image is to pull the prebuilt image from the Docker Hub Registry.
docker pull bitnami/cassandra:latest
To use a specific version, you can pull a versioned tag. You can view the list of available versions in the Docker Hub Registry.
docker pull bitnami/cassandra:[TAG]
If you wish, you can also build the image yourself by cloning the repository, changing to the directory containing the Dockerfile and executing the docker build
command. Remember to replace the APP
, VERSION
and OPERATING-SYSTEM
path placeholders in the example command below with the correct values.
git clone https://github.com/bitnami/containers.git
cd bitnami/APP/VERSION/OPERATING-SYSTEM
docker build -t bitnami/APP:latest .
If you remove the container all your data and configurations will be lost, and the next time you run the image the database will be reinitialized. To avoid this loss of data, you should mount a volume that will persist even after the container is removed.
For persistence you should mount a directory at the /bitnami
path. If the mounted directory is empty, it will be initialized on the first run.
docker run \
-v /path/to/cassandra-persistence:/bitnami \
bitnami/cassandra:latest
or using Docker Compose:
cassandra:
image: bitnami/cassandra:latest
volumes:
- /path/to/cassandra-persistence:/bitnami
NOTE: As this is a non-root container, the mounted files and directories must have the proper permissions for the UID
1001
.
Using Docker container networking, an Apache Cassandra server running inside a container can easily be accessed by your application containers.
Containers attached to the same network can communicate with each other using the container name as the hostname.
In this example, we will create an Apache Cassandra client instance that will connect to the server instance that is running on the same docker network as the client.
Step 1: Create a network
docker network create app-tier --driver bridge
Step 2: Launch the Apache Cassandra server instance
Use the --network app-tier
argument to the docker run
command to attach the Apache Cassandra container to the app-tier
network.
docker run -d --name cassandra-server \
--network app-tier \
bitnami/cassandra:latest
Step 3: Launch your Apache Cassandra client instance
Finally we create a new container instance to launch the Apache Cassandra client and connect to the server created in the previous step:
docker run -it --rm \
--network app-tier \
bitnami/cassandra:latest cqlsh --username cassandra --password cassandra cassandra-server
When not specified, Docker Compose automatically sets up a new network and attaches all deployed services to that network. However, we will explicitly define a new bridge
network named app-tier
. In this example we assume that you want to connect to the Apache Cassandra server from your own custom application image which is identified in the following snippet by the service name myapp
.
version: '2'
networks:
app-tier:
driver: bridge
services:
cassandra:
image: 'bitnami/cassandra:latest'
networks:
- app-tier
myapp:
image: 'YOUR_APPLICATION_IMAGE'
networks:
- app-tier
IMPORTANT:
- Please update the YOUR_APPLICATION_IMAGE_ placeholder in the above snippet with your application image
- In your application container, use the hostname
cassandra
to connect to the Apache Cassandra server
Launch the containers using:
docker-compose up -d
Customizable environment variables
Name | Description | Default Value |
---|---|---|
CASSANDRA_CLIENT_ENCRYPTION | Enable client encryption | false |
CASSANDRA_CLUSTER_NAME | Cassandra cluster name | My Cluster |
CASSANDRA_DATACENTER | Cassandra datacenter name | dc1 |
CASSANDRA_ENABLE_REMOTE_CONNECTIONS | Enable connection from remote locations | true |
CASSANDRA_ENABLE_RPC | Enable RPC endpoint in Cassandra | false |
CASSANDRA_ENABLE_USER_DEFINED_FUNCTIONS | Enable user defined functions | false |
CASSANDRA_ENABLE_SCRIPTED_USER_DEFINED_FUNCTIONS | Enable scripted user defined functions | false |
CASSANDRA_ENDPOINT_SNITCH | Name of the cluster endpoint snitch | SimpleSnitch |
CASSANDRA_HOST | Cassandra host name | nil |
CASSANDRA_INTERNODE_ENCRYPTION | Internode encryption type | none |
CASSANDRA_NUM_TOKENS | Number of tokens in cluster connection | 256 |
CASSANDRA_PASSWORD_SEEDER | Set node as password seeder in the cluster | no |
CASSANDRA_SEEDS | List of cluster seeds | $DB_HOST |
CASSANDRA_PEERS | List of cluster peers | $DB_SEEDS |
CASSANDRA_NODES | List of cluster nodes (seeders and non seeders) | nil |
CASSANDRA_RACK | Cassandra rack name | rack1 |
CASSANDRA_BROADCAST_ADDRESS | Node broadcast address | nil |
CASSANDRA_AUTOMATIC_SSTABLE_UPGRADE | Automatically upgrade sstables after upgrade | false |
CASSANDRA_STARTUP_CQL | Startup CQL commands to run at boot | nil |
CASSANDRA_IGNORE_INITDB_SCRIPTS | Ignore the execution of init scripts | no |
CASSANDRA_CQL_PORT_NUMBER | CQL port | 9042 |
CASSANDRA_JMX_PORT_NUMBER | JMX port | 7199 |
CASSANDRA_TRANSPORT_PORT_NUMBER | Transport port | 7000 |
CASSANDRA_CQL_MAX_RETRIES | Maximum retries for CQL startup operations | 20 |
CASSANDRA_CQL_SLEEP_TIME | Sleep time for CQL startup operations | 5 |
CASSANDRA_INIT_MAX_RETRIES | Maximum retries for init startup operations | 100 |
CASSANDRA_INIT_SLEEP_TIME | Sleep time for init startup operations | 5 |
CASSANDRA_PEER_CQL_MAX_RETRIES | Maximum retries for peer startup operations | 100 |
CASSANDRA_PEER_CQL_SLEEP_TIME | Sleep time for peer startup operations | 10 |
CASSANDRA_DELAY_START_TIME | Delay Cassandra start by the number of provided seconds | 10 |
CASSANDRA_AUTO_SNAPSHOT_TTL | Take an automatic snapshot of the data before truncating a keyspace or dropping a table | 30d |
ALLOW_EMPTY_PASSWORD | Allow no credentials in the installation. | no |
CASSANDRA_AUTHORIZER | Cassandra connection authorizer | CassandraAuthorizer |
CASSANDRA_AUTHENTICATOR | Cassandra connection authenticator | PasswordAuthenticator |
CASSANDRA_USER | Cassandra username | cassandra |
CASSANDRA_PASSWORD | Cassandra password | nil |
CASSANDRA_KEYSTORE_PASSWORD | Cassandra keystore password | cassandra |
CASSANDRA_TRUSTSTORE_PASSWORD | Cassandra truststore password | cassandra |
CASSANDRA_KEYSTORE_LOCATION | Cassandra keystore location | ${DB_VOLUME_DIR}/secrets/keystore |
CASSANDRA_TRUSTSTORE_LOCATION | Cassandra truststore location | ${DB_VOLUME_DIR}/secrets/truststore |
CASSANDRA_TMP_P12_FILE | Cassandra truststore location | ${DB_TMP_DIR}/keystore.p12 |
CASSANDRA_SSL_CERT_FILE | Cassandra SSL certificate location | ${DB_VOLUME_DIR}/certs/tls.crt |
CASSANDRA_SSL_KEY_FILE | Cassandra SSL keyfile location | ${DB_VOLUME_DIR}/certs/tls.key |
CASSANDRA_SSL_CA_FILE | Cassandra SSL CA location | nil |
CASSANDRA_SSL_VALIDATE | Perform SSL validation on the certificates | false |
SSL_VERSION | TLS version to use when connecting. | TLSv1_2 |
CASSANDRA_MOUNTED_CONF_DIR | Cassandra directory for mounted configuration files | ${DB_VOLUME_DIR}/conf |
JAVA_TOOL_OPTIONS | Java tool options. | nil |
Read-only environment variables
Name | Description | Value |
---|---|---|
DB_FLAVOR | Database flavor. Valid values: cassandra or scylladb . | cassandra |
CASSANDRA_BASE_DIR | Cassandra installation directory | /opt/bitnami/cassandra |
CASSANDRA_BIN_DIR | Cassandra executables directory | ${DB_BASE_DIR}/bin |
CASSANDRA_VOLUME_DIR | Persistence base directory | /bitnami/cassandra |
CASSANDRA_DATA_DIR | Cassandra data directory | ${DB_VOLUME_DIR}/data |
CASSANDRA_COMMITLOG_DIR | Cassandra commit log directory | ${DB_DATA_DIR}/commitlog |
CASSANDRA_INITSCRIPTS_DIR | Path to the Cassandra container init scripts directory | /docker-entrypoint-initdb.d |
CASSANDRA_LOG_DIR | Cassandra logs directory | ${DB_BASE_DIR}/logs |
CASSANDRA_TMP_DIR | Cassandra temporary directory | ${DB_BASE_DIR}/tmp |
JAVA_BASE_DIR | Java base directory | ${BITNAMI_ROOT_DIR}/java |
JAVA_BIN_DIR | Java binary directory | ${JAVA_BASE_DIR}/bin |
PYTHON_BASE_DIR | Python base directory | ${BITNAMI_ROOT_DIR}/python |
PYTHON_BIN_DIR | Python binary directory | ${PYTHON_BASE_DIR}/bin |
CASSANDRA_LOG_FILE | Path to the Cassandra log file | ${DB_LOG_DIR}/cassandra.log |
CASSANDRA_FIRST_BOOT_LOG_FILE | Path to the Cassandra first boot log file | ${DB_LOG_DIR}/cassandra_first_boot.log |
CASSANDRA_INITSCRIPTS_BOOT_LOG_FILE | Path to the Cassandra init scripts log file | ${DB_LOG_DIR}/cassandra_init_scripts_boot.log |
CASSANDRA_PID_FILE | Path to the Cassandra pid file | ${DB_TMP_DIR}/cassandra.pid |
CASSANDRA_DAEMON_USER | Cassandra system user | cassandra |
CASSANDRA_DAEMON_GROUP | Cassandra system group | cassandra |
CASSANDRA_CONF_DIR | Cassandra configuration directory | ${DB_BASE_DIR}/conf |
CASSANDRA_DEFAULT_CONF_DIR | Cassandra default configuration directory | ${DB_BASE_DIR}/conf.default |
CASSANDRA_CONF_FILE | Path to Cassandra configuration file | ${DB_CONF_DIR}/cassandra.yaml |
CASSANDRA_RACKDC_FILE | Path to Cassandra cassandra-rackdc.properties file | ${DB_CONF_DIR}/cassandra-rackdc.properties |
CASSANDRA_LOGBACK_FILE | Path to Cassandra logback.xml file | ${DB_CONF_DIR}/logback.xml |
CASSANDRA_COMMITLOG_ARCHIVING_FILE | Path to Cassandra commitlog_archiving.properties file | ${DB_CONF_DIR}/commitlog_archiving.properties |
CASSANDRA_ENV_FILE | Path to Cassandra cassandra-env.sh file | ${DB_CONF_DIR}/cassandra-env.sh |
CASSANDRA_MOUNTED_CONF_PATH | Relative path (in mounted volume) to Cassandra configuration file | cassandra.yaml |
CASSANDRA_MOUNTED_RACKDC_PATH | Relative path (in mounted volume) to Cassandra cassandra-rackdc-properties file | cassandra-rackdc.properties |
CASSANDRA_MOUNTED_ENV_PATH | Relative path (in mounted volume) to Cassandra cassandra-env.sh file | cassandra-env.sh |
CASSANDRA_MOUNTED_LOGBACK_PATH | Path to Cassandra logback.xml file | logback.xml |
Additionally, any environment variable beginning with the following prefix will be mapped to its corresponding Apache Cassandra key in the proper file:
CASSANDRA_CFG_ENV_
: Will add the corresponding key and the provided value to cassandra-env.sh
.CASSANDRA_CFG_RACKDC_
: Will add the corresponding key and the provided value to cassandra-rackdc.properties
.CASSANDRA_CFG_COMMITLOG_
: Will add the corresponding key and the provided value to commitlog_archiving.properties
.CASSANDRA_CFG_YAML_
: Will add the corresponding key and the provided value to cassandra.yaml
.For example, use CASSANDRA_CFG_RACKDC_PREFER_LOCAL=true
in order to configure prefer_local
in cassandra-rackdc.properties
. Or, use CASSANDRA_CFG_YAML_INTERNODE_COMPRESSION=all
in order to set internode_compression
to all
in cassandra.yaml
.
NOTE: Environment variables will be omitted when mounting a configuration file
When you start the cassandra image, you can adjust the configuration of the instance by passing one or more environment variables either on the docker-compose file or on the docker run
command line. If you want to add a new environment variable:
cassandra:
image: bitnami/cassandra:latest
environment:
- CASSANDRA_TRANSPORT_PORT_NUMBER=7000
-e
option with each variable and value: $ docker run --name cassandra -d -p 7000:7000 --network=cassandra_network \
-e CASSANDRA_TRANSPORT_PORT_NUMBER=7000 \
-v /your/local/path/bitnami/cassandra:/bitnami \
bitnami/cassandra
Note: the README for this container is longer than the DockerHub length limit of 25000, so it has been trimmed. The full README can be found at https://github.com/bitnami/containers/blob/main/bitnami/cassandra/README.md