A minimal Docker image to run Roshi.
What is Roshi?
Roshi implements a time-series event storage via a LWW-element-set CRDT with limited inline garbage collection. Roshi is a stateless, distributed layer on top of Redis and is implemented in Go. It is partition tolerant, highly available and eventually consistent.
Roshi is super cool.
How To Use This Image
Roshi uses Redis as its persistence layer. You will need to have a Redis instance running somewhere for Roshi to connect to. A production installation of Roshi should have at least 3 independent Redis clusters running in different failure domains. For demo purposes you can just run Roshi on a single Redis instance with zero fault tolerance. See the READMEs for roshi, roshi-server, and farm for more details.
Starting a Roshi instance
# Start a Redis instance named my-redis and daemonize docker run --name my-redis -d redis # Start a Roshi server instance named my-roshi-server, linked to my-redis with an alias of redis_backend, exposing port 6302 to localhost docker run --name my-roshi-server --link my-redis:redis_backend -p 6302:6302 ello/roshi-server -redis.instances=redis_backend:6379 # Start a Roshi walker instance named my-roshi-walker, linked to my-redis with an alias of redis_backend, exposing port 6060 to localhost for metrics docker run --name my-roshiwalker --link my-redis:redis_backend -p 6060:6060 ello/roshi-walker -redis.instances=redis_backend:6379 # In another shell you can curl /metrics to see that both are running curl localhost:6302/metrics curl localhost:6060/metrics # If you are using boot2docker curl "$(boot2docker ip):6302/metrics" curl "$(boot2docker ip):6060/metrics"
The server image includes
EXPOSE 6302 (the default Roshi port), so container linking will work.
View the Roshi license information.
Hey just submit a PR. Ain't no thang.