Search code examples
dockercassandrabitnami

Running script after Cassandra starts (Docker)


I'm trying to run a script after Cassandra starts that will create the keyspace.

Here's my docker compose:

version: '3.6'

services:
  cassandra:
    container_name: cassandra
    image: bitnami/cassandra:3.11.2
    volumes:
        - ./cassandra_data:/bitnami
        - ./scripts/cassandra_init.sh:/cassandra_init.sh
    environment:
        - CASSANDRA_USER=${CASSANDRA_USERNAME}
        - CASSANDRA_PASSWORD=${CASSANDRA_PASSWORD}
        - CASSANDRA_CLUSTER_NAME=Testing
        - CASSANDRA_PASSWORD_SEEDER=yes
    entrypoint: ["/app-entrypoint.sh"]
    command: ["nami","start","--foreground","cassandra","/cassandra_init.sh"]
volumes:
  cassandra_data:

["nami","start","--foreground","cassandra"] starts Cassandra. If I start the container without adding my script, it works just fine.

However if I start the container including my script, I get this error after the container starts: nami ERROR Unknown command '/cassandra_init.sh'

How can I achieve this?


Solution

  • I figured it out.

    In docker.compose I had to call the script init.sh and call it:

    version: '3.6'
    
    services:
      cassandra:
        container_name: cassandra
        image: bitnami/cassandra:3.11.2
        volumes:
            - ./cassandra_data:/bitnami
            - ./scripts/cassandra_init.sh:/init.sh
        environment:
            - CASSANDRA_USER=${CASSANDRA_USERNAME}
            - CASSANDRA_PASSWORD=${CASSANDRA_PASSWORD}
            - CASSANDRA_CLUSTER_NAME=Testing
            - CASSANDRA_PASSWORD_SEEDER=yes
        entrypoint: ["/app-entrypoint.sh"]
        command: ["/init.sh"]
    volumes:
      cassandra_data:
    

    and the script should look like this:

    #!/bin/bash
    nami start cassandra
    echo "script stuff here to run after cassandra starts"