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 compound flags. Compound flags contain one or more options that let you define multiple settings in a semicolon-delimited list. The general syntax for compound flags is as follows: --<flagname> option-a=value-a; option-b=value-b
.
The following example shows how to use compound flags 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
.
For an environment variable, the --<flagname> option-a=value;option-b=value
can be represented as <FLAGNAME>="option-a=value;option-b=value"
.
Below 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
A configuration file can be specified using the --config
flag, or an environment variable, such as dgraph alpha --config my_config.json
or 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 compound flag is used as a key that points to a hash. The hash consists of key: value
pairs that correspond to the compound flag’s list of option=value
pairs.
JSON config file
In JSON, the --<flagname> option-a=value;option-b=value
can be represented as:
{
"<flagname>": {
"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, the --<flagname> option-a=value;option-b=value
can be represented as:
<flagname>:
option-a: value
opton-b: value
The following example YAML config file (config.yml
) 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 YAML config file (config.yml
) 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