Skip to content

Instantly share code, notes, and snippets.

@andfanilo
Last active January 18, 2022 14:47
Show Gist options
  • Save andfanilo/fa2ec0577868014878a5079c276221ac to your computer and use it in GitHub Desktop.
Save andfanilo/fa2ec0577868014878a5079c276221ac to your computer and use it in GitHub Desktop.
NoSQL Docker demo
version: '3'
services:
redis:
image: redis
container_name: myredis
mongo:
image: mongo
container_name: mymongo
cassandra:
image: cassandra
container_name: mycassandra
neo4j:
image: neo4j
environment:
- NEO4J_AUTH=none
ports:
- "7687:7687"
- "7473:7473"
- "7474:7474"
container_name: myneo4j

NoSQL Docker demo

Here is a Docker compose file which starts redis, mongo, cassandra and neo4j containers for demonstration purposes.

Cluster

If you want to start all at once !

Start : docker-compose up

Dismount : docker-compose down

Redis

Run Redis server : docker-compose run --rm --name myredis redis

Connect to redis : docker exec -it myredis bash; redis-cli

Interact :

ping
ping "hello world"

set hello world
get hello

keys *

incr next.recordings.id

sadd recordings:1:artist "Rolling Stones"
sadd recordings:1:title "Beggars banquet"
sadd recordings:1:price 9.99

keys *

smembers recordings:1:artist
srem recordings:1:artist "Rolling Stones"

Mongo

Run Mongo server : docker-compose run --rm --name mymongo mongo

Connect to mongo : docker exec -it mymongo mongo

use rainforest
album ={
  id:1,
  artist: "Rolling Stones",
  price: 9.99
}
db.recordings.insert(album)
db.recordings.find()
db.recordings.remove({id:1})
db.recordings.find()

Cassandra

Run Cassandra server : docker-compose run --rm --name mycassandra cassandra

Connect to Cassandra : docker exec -it mycassandra cqlsh

CREATE KEYSPACE rainforest WITH replication = {'class':'SimpleStrategy', 'replication_factor':'1'};
USE rainforest;
CREATE COLUMNFAMILY recordings(
title varchar PRIMARY KEY,
artist varchar, 
price double);
INSERT INTO recordings (title, artist, price) values ('Tattoo You', 'Stones', 9.99);
Select * from recordings;
CREATE INDEX ON recordings(artist);
SELECT * from recordings where artist='Stones';

Neo4j

Run Neo4j server : docker-compose run --rm --service-ports --name myneo4j neo4j

Connect to Neo4j : docker exec -it myneo4j cypher-shell

Neo4j Browser is available via HTTP at http://localhost:7474 and HTTPS at https://localhost:7473.

CREATE (a { artist: 'Rolling Stones' });
CREATE (t { title: 'Beggars Banquet' });

MATCH (a),(t)
WHERE a.artist = 'Rolling Stones' AND t.title = 'Beggars Banquet'
CREATE (a)-[r:ARTIST]->(t)
RETURN r;

MATCH (rolling_stones)-[:ARTIST]-(recordings)
WHERE rolling_stones.artist = 'Rolling Stones' 
RETURN recordings.title;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment