The following command works perfectly and the riak service starts as expected:
docker run --name=riak -d -p 8087:8087 -p 8098:8098 -v $(pwd)/schemas:/etc/riak/schema basho/riak-ts
The local schemas
directory is mounted successfully and the sql
file in it is read by riak. However if I try to mount the riak's data
or log
directories, the riak service does not start and timeouts after 15 seconds:
docker run --name=riak -d -p 8087:8087 -p 8098:8098 -v $(pwd)/logs:/var/log/riak -v $(pwd)/schemas:/etc/riak/schema basho/riak-ts
Output of docker logs riak
:
+ /usr/sbin/riak start
riak failed to start within 15 seconds,
see the output of 'riak console' for more information.
If you want to wait longer, set the environment variable
WAIT_FOR_ERLANG to the number of seconds to wait.
Why does riak not start when it's logs or data directories are mounted to local directories?
This issue is with the directory owner of mounted
log
folder. The folder$GROUP
and$USER
are expected to beriak
as follow:but with volumes you are getting:
One way to solve this is to have the directory ownership as
riak
user and group on host before starting the container. I looked the UID/GID (/etc/passwd
) in docker image and they were:now change the ownership on host directories before starting the container as:
This should solve it. At least for now. Details here.