Config
You can see the list of available subcommands with dgraph --help
. You can view the full set of configuration options for a given subcommand with dgraph <subcommand> --help
(for example, dgraph zero --help
).
You can configure options in multiple ways, which are listed below from highest precedence to lowest precedence:
- Using command line flags (as described in the help output).
- Using environment variables.
- Using a configuration file.
If no configuration for an option is used, then the default value as described
in the --help
output applies.
You can use multiple configuration methods at the same time, so a core set of options could be set in a config file, and instance specific options could be set using environment vars or flags.
Command line flags
Dgraph has global flags that apply to all subcommands and flags specific to a subcommand.
Some flags have been deprecated and replaced in release v21.03
, and flags for several commands (alpha
, backup
, bulk
,debug
, live
, and zero
) now have superflags. Superflags are compound flags that contain
one or more options that let you define multiple settings in a semicolon-delimited
list. The general syntax for superflags is as follows: --<flagname> option-a=value-a; option-b=value-b
.
The following example shows how to use superflags when running the dgraph alpha
command.
dgraph alpha --my=alpha.example.com:7080 --zero=zero.example.com:5080 \
--badger "compression=zstd:1" \
--block_rate "10" \
--trace "jaeger=http://jaeger:14268" \
--tls "ca-cert=/dgraph/tls/ca.crt;client-auth-type=REQUIREANDVERIFY;server-cert=/dgraph/tls/node.crt;server-key=/dgraph/tls/node.key;use-system-ca=true;internal-port=true;client-cert=/dgraph/tls/client.dgraphuser.crt;client-key=/dgraph/tls/client.dgraphuser.key"
--security "whitelist=10.0.0.0/8,172.0.0.0/8,192.168.0.0/16"
Environment variables
The environment variable names for Dgraph mirror the flag names shown in the Dgraph CLI --help
output. These environment variable names are formed the concatenation of DGRAPH
, the subcommand invoked (ALPHA
, ZERO
, LIVE
, or BULK
), and then the name of the flag (in uppercase). For example, instead running a command like dgraph alpha --block_rate 10
, you could set the following environment variable: DGRAPH_ALPHA_BLOCK_RATE=10 dgraph alpha
.
So, the environment variable syntax for a superflag (--<superflag-name> option-a=value; option-b=value
) is <SUPERFLAG-NAME>="option-a=value;option-b=value"
.
The following is an example of environment variables for dgraph alpha
:
DGRAPH_ALPHA_BADGER="compression=zstd:1"
DGRAPH_ALPHA_BLOCK_RATE="10"
DGRAPH_ALPHA_TRACE="jaeger=http://jaeger:14268"
DGRAPH_ALPHA_TLS="ca-cert=/dgraph/tls/ca.crt;client-auth-type=REQUIREANDVERIFY;server-cert=/dgraph/tls/node.crt;server-key=/dgraph/tls/node.key;use-system-ca=true;internal-port=true;client-cert=/dgraph/tls/client.dgraphuser.crt;client-key=/dgraph/tls/client.dgraphuser.key"
DGRAPH_ALPHA_SECURITY="whitelist=10.0.0.0/8,172.0.0.0/8,192.168.0.0/16"
Configuration file
You can specify a configuration file using the Dgraph CLI with the --config
flag (for example,
dgraph alpha --config my_config.json
), or using an environment variable, (for example, DGRAPH_ALPHA_CONFIG=my_config.json dgraph alpha
).
Dgraph supports configuration file formats that it detects based on file extensions (.json
, .yml
or .yaml
). In these files, the name of the superflag is used as a key that points to a hash. The hash consists of key: value
pairs that correspond to the superflag’s list of option=value
pairs.
JSON config file
In JSON, you can represent a superflag and its options (--<superflag-name> option-a=value;option-b=value
) as follows:
{
"<superflag-name>": {
"option-a": "value",
"opton-b": "value"
}
}
The following example JSON config file (config.json
) using kebab-case:
{
"badger": { "compression": "zstd:1" },
"trace": { "jaeger": "http://jaeger:14268" },
"security": { "whitelist": "10.0.0.0/8,172.0.0.0/8,192.168.0.0/16" },
"tls": {
"ca-cert": "/dgraph/tls/ca.crt",
"client-auth-type": "REQUIREANDVERIFY",
"server-cert": "/dgraph/tls/node.crt",
"server-key": "/dgraph/tls/node.key",
"use-system-ca": true,
"internal-port": true,
"client-cert": "/dgraph/tls/client.dgraphuser.crt",
"client-key": "/dgraph/tls/client.dgraphuser.key"
}
}
The following example JSON config file (config.json
) using snake_case:
{
"badger": { "compression": "zstd:1" },
"trace": { "jaeger": "http://jaeger:14268" },
"security": { "whitelist": "10.0.0.0/8,172.0.0.0/8,192.168.0.0/16" },
"tls": {
"ca_cert": "/dgraph/tls/ca.crt",
"client_auth_type": "REQUIREANDVERIFY",
"server_cert": "/dgraph/tls/node.crt",
"server_key": "/dgraph/tls/node.key",
"use_system_ca": true,
"internal_port": true,
"client_cert": "/dgraph/tls/client.dgraphuser.crt",
"client_key": "/dgraph/tls/client.dgraphuser.key"
}
}
YAML config file
In YAML, you can represent a superflag and its options (--<superflag-name> option-a=value;option-b=value
) as follows:
<superflag-name>:
option-a: value
opton-b: value
The following example YAML config file (config.yml
) uses kebab-case:
badger:
compression: zstd:1
trace:
jaeger: http://jaeger:14268
security:
whitelist: 10.0.0.0/8,172.0.0.0/8,192.168.0.0/16
tls:
ca-cert: /dgraph/tls/ca.crt
client-auth-type: REQUIREANDVERIFY
server-cert: /dgraph/tls/node.crt
server-key: /dgraph/tls/node.key
use-system-ca: true
internal-port: true
client-cert: /dgraph/tls/client.dgraphuser.crt
client-key: /dgraph/tls/client.dgraphuser.key
The following example YAML config file (config.yml
) uses snake_case:
badger:
compression: zstd:1
trace:
jaeger: http://jaeger:14268
security:
whitelist: 10.0.0.0/8,172.0.0.0/8,192.168.0.0/16
tls:
ca_cert: /dgraph/tls/ca.crt
client_auth_type: REQUIREANDVERIFY
server_cert: /dgraph/tls/node.crt
server_key: /dgraph/tls/node.key
use_system_ca: true
internal_port: true
client_cert: /dgraph/tls/client.dgraphuser.crt
client_key: /dgraph/tls/client.dgraphuser.key