Docker image: add support for SYNAPSE_DATA_DIR parameter

Fixes #4830.
This commit is contained in:
Richard van der Hoff 2019-06-25 15:18:30 +01:00
parent c58a6e6108
commit 7e433beb65
2 changed files with 17 additions and 4 deletions

View File

@ -186,3 +186,7 @@ The following environment variables are supported in this mode:
* `SYNAPSE_REPORT_STATS` (mandatory, `yes` or `no`): whether to enable * `SYNAPSE_REPORT_STATS` (mandatory, `yes` or `no`): whether to enable
anonymous statistics reporting. anonymous statistics reporting.
* `SYNAPSE_CONFIG_PATH` (mandatory): path to the file to be generated. * `SYNAPSE_CONFIG_PATH` (mandatory): path to the file to be generated.
* `SYNAPSE_DATA_DIR`: where the generated config will put persistent data
such as the datatase and media store. Defaults to `/data`.
* `UID`, `GID`: the user id and group id to use for creating the data
directories. Defaults to `991`, `991`.

View File

@ -103,11 +103,12 @@ def generate_config_from_template(environ, ownership):
return config_path return config_path
def run_generate_config(environ): def run_generate_config(environ, ownership):
"""Run synapse with a --generate-config param to generate a template config file """Run synapse with a --generate-config param to generate a template config file
Args: Args:
environ (dict): environment dictionary environ (dict): env var dict
ownership (str): "userid:groupid" arg for chmod
Never returns. Never returns.
""" """
@ -115,6 +116,11 @@ def run_generate_config(environ):
if v not in environ: if v not in environ:
error("Environment variable '%s' is mandatory in `generate` mode." % (v,)) error("Environment variable '%s' is mandatory in `generate` mode." % (v,))
data_dir = environ.get("SYNAPSE_DATA_DIR", "/data")
# make sure that synapse has perms to write to the data dir.
subprocess.check_output(["chown", ownership, data_dir])
args = [ args = [
"python", "python",
"-m", "-m",
@ -125,8 +131,11 @@ def run_generate_config(environ):
environ["SYNAPSE_REPORT_STATS"], environ["SYNAPSE_REPORT_STATS"],
"--config-path", "--config-path",
environ["SYNAPSE_CONFIG_PATH"], environ["SYNAPSE_CONFIG_PATH"],
"--data-directory",
data_dir,
"--generate-config", "--generate-config",
] ]
# log("running %s" % (args, ))
os.execv("/usr/local/bin/python", args) os.execv("/usr/local/bin/python", args)
@ -134,9 +143,9 @@ def main(args, environ):
mode = args[1] if len(args) > 1 else None mode = args[1] if len(args) > 1 else None
ownership = "{}:{}".format(environ.get("UID", 991), environ.get("GID", 991)) ownership = "{}:{}".format(environ.get("UID", 991), environ.get("GID", 991))
# In generate mode, generate a configuration, missing keys, then exit # In generate mode, generate a configuration and missing keys, then exit
if mode == "generate": if mode == "generate":
return run_generate_config(environ) return run_generate_config(environ, ownership)
# In normal mode, generate missing keys if any, then run synapse # In normal mode, generate missing keys if any, then run synapse
if "SYNAPSE_CONFIG_PATH" in environ: if "SYNAPSE_CONFIG_PATH" in environ: