Sign inSign up

nilium/riak

By nilium

•Updated over 6 years ago

Image
0

1.7K

nilium/riak repository overview

⁠docker-riak

This repository contains a Dockerfile that will build Riak into a Ubuntu 16.04 Xenial image, starting a Riak server.

⁠Building

To build the Docker image, run make (or make docker). The build can take some time, as it involves building both Erlang and Riak from source.

You can alter the resulting image with the following Makefile variables:

VariableDefaultDescription
DOCKERdockerThe Docker executable. Can set to img or another CLI-compatible tool.
DOCKER_REGISTRYindex.docker.io/kochavaThe registry to target.
DOCKER_IMAGEriakThe image repository.
DOCKER_TAGlatestThe image tag.

⁠Starting Riak

To start Riak, you can create a simple container with docker run:

# Create a network:
$ docker network create riak

# Start node riak-1:
$ docker run --detach --network riak --env RIAK_NODENAME=riak@riak-1. --name riak-1 kochava/riak

To then start a second node and join it to the cluster, you would do the following:

# Start node riak-2:
$ docker run --detach --network riak --env RIAK_NODENAME=riak@riak-2. --name riak-2 kochava/riak

# Join the cluster:
$ docker exec -it riak-2 riak-admin cluster join riak@riak-1.

# Check the cluster plan:
$ docker exec -it riak-2 riak-admin cluster plan

# Commit the cluster plan:
$ docker exec -it riak-2 riak-admin cluster commit

# Check riak-1's memberships:
$ docker exec -it riak-1 riak-admin status | grep ring_members
ring_members : ['riak@riak-1.','riak@riak-2.']

⁠Configuration

⁠riak.conf

The riak.conf can be modified in two ways:

  1. Mount a riak.conf as /usr/local/riak/etc/riak.conf.

  2. Set RIAK_ environment variables, which will be appended to the riak.conf in the container. If you've mounted a riak.conf into the container, avoid using RIAK_ variables, since this could modify the file that was mounted.

    The variables and the config key they correspond to are listed in a table below.

⁠advanced.conf

If modifying advanced.conf, you must mount it into the container or build a derived image from it. There is currently no option to configure its options via environment variables.

⁠Cluster Operations

Riak's bin dir is in the container's PATH. You can run riak-admin, riak, and other commands using docker exec. Note that running riak stop will stop Riak, but that runsv will start it afterward.

⁠Stopping the Container

Because the container uses runsv, if you start it in interactive mode, a Ctrl-C will send an interrupt signal to runsv, which will diligently send it to Riak.

Instead, you need to either send a terminate signal to runsv or use docker stop $CONTAINER (which will send a terminate signal for you). You can also use docker exec $CONTAINER sv x, which will also instruct runsv to exit.

⁠RIAK_* Environment Variables

The following environment variables, if set, will modify riak.conf by setting the associated riak.conf field to its value. Exercise caution when using this with bind-mounted riak.conf files, as it will append lines to the file.

Environment Variableriak.conf Field
RIAK_AF1_WORKER_POOL_SIZEaf1_worker_pool_size
RIAK_AF2_WORKER_POOL_SIZEaf2_worker_pool_size
RIAK_AF3_WORKER_POOL_SIZEaf3_worker_pool_size
RIAK_AF4_WORKER_POOL_SIZEaf4_worker_pool_size
RIAK_ANTI_ENTROPYanti_entropy
RIAK_BACKEND_PAUSE_MSbackend_pause_ms
RIAK_BE_WORKER_POOL_SIZEbe_worker_pool_size
RIAK_BITCASK_DATA_ROOTbitcask.data_root
RIAK_BITCASK_IO_MODEbitcask.io_mode
RIAK_CLUSTER_JOB_RIAK_KV_LIST_BUCKETScluster.job.riak_kv.list_buckets
RIAK_CLUSTER_JOB_RIAK_KV_LIST_KEYScluster.job.riak_kv.list_keys
RIAK_CLUSTER_JOB_RIAK_KV_MAP_REDUCEcluster.job.riak_kv.map_reduce
RIAK_CLUSTER_JOB_RIAK_KV_MAP_REDUCE_JScluster.job.riak_kv.map_reduce_js
RIAK_CLUSTER_JOB_RIAK_KV_SECONDARY_INDEXcluster.job.riak_kv.secondary_index
RIAK_CLUSTER_JOB_RIAK_KV_STREAM_LIST_BUCKETScluster.job.riak_kv.stream_list_buckets
RIAK_CLUSTER_JOB_RIAK_KV_STREAM_LIST_KEYScluster.job.riak_kv.stream_list_keys
RIAK_CLUSTER_JOB_RIAK_KV_STREAM_SECONDARY_INDEXcluster.job.riak_kv.stream_secondary_index
RIAK_CLUSTER_JOB_YOKOZUNA_QUERYcluster.job.yokozuna.query
RIAK_CS_VERSIONcs_version
RIAK_DISTRIBUTED_COOKIEdistributed_cookie
RIAK_DTRACEdtrace
RIAK_ERLANG_ASYNC_THREADSerlang.async_threads
RIAK_ERLANG_ASYNC_THREADS_STACK_SIZEerlang.async_threads.stack_size
RIAK_ERLANG_CRASH_DUMPerlang.crash_dump
RIAK_ERLANG_DISTRIBUTION_BUFFER_SIZEerlang.distribution_buffer_size
RIAK_ERLANG_DISTRIBUTION_NET_TICKTIMEerlang.distribution.net_ticktime
RIAK_ERLANG_DISTRIBUTION_PORT_RANGE_MAXIMUMerlang.distribution.port_range.maximum
RIAK_ERLANG_DISTRIBUTION_PORT_RANGE_MINIMUMerlang.distribution.port_range.minimum
RIAK_ERLANG_FULLSWEEP_AFTERerlang.fullsweep_after
RIAK_ERLANG_Kerlang.K
RIAK_ERLANG_MAX_ETS_TABLESerlang.max_ets_tables
RIAK_ERLANG_MAX_PORTSerlang.max_ports
RIAK_ERLANG_PROCESS_LIMITerlang.process_limit
RIAK_ERLANG_SCHEDULERS_COMPACTION_OF_LOADerlang.schedulers.compaction_of_load
RIAK_ERLANG_SCHEDULERS_FORCE_WAKEUP_INTERVALerlang.schedulers.force_wakeup_interval
RIAK_ERLANG_SCHEDULERS_ONLINEerlang.schedulers.online
RIAK_ERLANG_SCHEDULERS_TOTALerlang.schedulers.total
RIAK_ERLANG_SCHEDULERS_UTILIZATION_BALANCINGerlang.schedulers.utilization_balancing
RIAK_ERLANG_SMPerlang.smp
RIAK_ERLANG_Werlang.W
RIAK_LEVELDB_COMPRESSIONleveldb.compression
RIAK_LEVELDB_COMPRESSION_ALGORITHMleveldb.compression.algorithm
RIAK_LEVELDB_MAXIMUM_MEMORY_PERCENTleveldb.maximum_memory.percent
RIAK_LEVELED_COMPACTION_LOW_HOURleveled.compaction_low_hour
RIAK_LEVELED_COMPACTION_RUNS_PERDAYleveled.compaction_runs_perday
RIAK_LEVELED_COMPACTION_TOP_HOURleveled.compaction_top_hour
RIAK_LEVELED_COMPRESSION_METHODleveled.compression_method
RIAK_LEVELED_COMPRESSION_POINTleveled.compression_point
RIAK_LEVELED_DATA_ROOTleveled.data_root
RIAK_LEVELED_JOURNAL_OBJECTCOUNTleveled.journal_objectcount
RIAK_LEVELED_JOURNAL_SIZEleveled.journal_size
RIAK_LEVELED_LEDGER_PAGECACHELEVELleveled.ledger_pagecachelevel
RIAK_LEVELED_LOG_LEVELleveled.log_level
RIAK_LEVELED_MAX_RUN_LENGTHleveled.max_run_length
RIAK_LEVELED_SYNC_STRATEGYleveled.sync_strategy
RIAK_LISTENER_HTTPS_INTERNALlistener.https.internal
RIAK_LISTENER_HTTP_INTERNALlistener.http.internal
RIAK_LISTENER_PROTOBUF_INTERNALlistener.protobuf.internal
RIAK_LOG_CONSOLElog.console
RIAK_LOG_CONSOLE_FILElog.console.file
RIAK_LOG_CONSOLE_LEVELlog.console.level
RIAK_LOG_CRASHlog.crash
RIAK_LOG_CRASH_FILElog.crash.file
RIAK_LOG_CRASH_MAXIMUM_MESSAGE_SIZElog.crash.maximum_message_size
RIAK_LOG_CRASH_ROTATIONlog.crash.rotation
RIAK_LOG_CRASH_ROTATION_KEEPlog.crash.rotation.keep
RIAK_LOG_CRASH_SIZElog.crash.size
RIAK_LOG_ERROR_FILElog.error.file
RIAK_LOG_SYSLOGlog.syslog
RIAK_MULTI_BACKEND_NAME_LEVELDB_COMPRESSIONmulti_backend.name.leveldb.compression
RIAK_MULTI_BACKEND_NAME_LEVELDB_COMPRESSION_ALGORITHMmulti_backend.name.leveldb.compression.algorithm
RIAK_MULTI_BACKEND_NAME_LEVELED_JOURNAL_OBJECTCOUNTmulti_backend.name.leveled.journal_objectcount
RIAK_MULTI_BACKEND_NAME_LEVELED_JOURNAL_SIZEmulti_backend.name.leveled.journal_size
RIAK_MULTI_BACKEND_NAME_LEVELED_LEDGER_PAGECACHELEVELmulti_backend.name.leveled.ledger_pagecachelevel
RIAK_NODENAMEnodename
RIAK_NODE_WORKER_POOL_SIZEnode_worker_pool_size
RIAK_OBJECT_FORMATobject.format
RIAK_OBJECT_SIBLINGS_MAXIMUMobject.siblings.maximum
RIAK_OBJECT_SIBLINGS_WARNING_THRESHOLDobject.siblings.warning_threshold
RIAK_OBJECT_SIZE_MAXIMUMobject.size.maximum
RIAK_OBJECT_SIZE_WARNING_THRESHOLDobject.size.warning_threshold
RIAK_PARTICIPATE_IN_COVERAGEparticipate_in_coverage
RIAK_PLATFORM_BIN_DIRplatform_bin_dir
RIAK_PLATFORM_DATA_DIRplatform_data_dir
RIAK_PLATFORM_ETC_DIRplatform_etc_dir
RIAK_PLATFORM_LIB_DIRplatform_lib_dir
RIAK_PLATFORM_LOG_DIRplatform_log_dir
RIAK_PROTOBUF_BACKLOGprotobuf.backlog
RIAK_RIAK_CONTROLriak_control
RIAK_RIAK_CONTROL_AUTH_MODEriak_control.auth.mode
RIAK_RIAK_CONTROL_AUTH_USER_ADMIN_PASSWORDriak_control.auth.user.admin.password
RIAK_RING_SIZEring_size
RIAK_SEARCHsearch
RIAK_SEARCH_QUEUE_BATCH_FLUSH_INTERVALsearch.queue.batch.flush_interval
RIAK_SEARCH_QUEUE_BATCH_MAXIMUMsearch.queue.batch.maximum
RIAK_SEARCH_QUEUE_BATCH_MINIMUMsearch.queue.batch.minimum
RIAK_SEARCH_QUEUE_HIGH_WATERMARKsearch.queue.high_watermark
RIAK_SEARCH_QUEUE_HIGH_WATERMARK_PURGE_STRATEGYsearch.queue.high_watermark.purge_strategy
RIAK_SEARCH_SOLR_JMX_PORTsearch.solr.jmx_port
RIAK_SEARCH_SOLR_JVM_OPTIONSsearch.solr.jvm_options
RIAK_SEARCH_SOLR_PORTsearch.solr.port
RIAK_SEARCH_SOLR_START_TIMEOUTsearch.solr.start_timeout
RIAK_SSL_CACERTFILEssl.cacertfile
RIAK_SSL_CERTFILEssl.certfile
RIAK_SSL_KEYFILEssl.keyfile
RIAK_STORAGE_BACKENDstorage_backend
RIAK_STRONG_CONSISTENCYstrong_consistency
RIAK_TICTACAAE_ACTIVEtictacaae_active
RIAK_TICTACAAE_DATAROOTtictacaae_dataroot
RIAK_TICTACAAE_PARALLELSTOREtictacaae_parallelstore
RIAK_TICTACAAE_REBUILDDELAYtictacaae_rebuilddelay
RIAK_TICTACAAE_REBUILDWAITtictacaae_rebuildwait
RIAK_TICTACAAE_STOREHEADStictacaae_storeheads
RIAK_TRANSFER_LIMITtransfer_limit
RIAK_WORKER_POOL_STRATEGYworker_pool_strategy

⁠License

All files under this repository are licensed under the Apache License Version 2.0.

Exceptions are made for riak.conf and advanced.config, which are under the same license, but are copyright 2013 Basho Technologies, Inc.

Copyright 2019 Kochava, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Tag summary

Content type

Image

Digest

Size

145.1 MB

Last updated

almost 7 years ago

docker pull nilium/riak