mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Merge pull request #5563 from matrix-org/rav/docker/data_dir
Docker image: add support for SYNAPSE_DATA_DIR parameter
This commit is contained in:
commit
b1b8a24b63
1
changelog.d/5563.bugfix
Normal file
1
changelog.d/5563.bugfix
Normal file
@ -0,0 +1 @@
|
|||||||
|
Docker: Use a sensible location for data files when generating a config file.
|
@ -179,3 +179,14 @@ docker run -d --name synapse \
|
|||||||
-e SYNAPSE_CONFIG_PATH=/data/homeserver.yaml \
|
-e SYNAPSE_CONFIG_PATH=/data/homeserver.yaml \
|
||||||
matrixdotorg/synapse:latest
|
matrixdotorg/synapse:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
|
The following environment variables are supported in this mode:
|
||||||
|
|
||||||
|
* `SYNAPSE_SERVER_NAME` (mandatory): the server public hostname.
|
||||||
|
* `SYNAPSE_REPORT_STATS` (mandatory, `yes` or `no`): whether to enable
|
||||||
|
anonymous statistics reporting.
|
||||||
|
* `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`.
|
||||||
|
@ -122,11 +122,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.
|
||||||
"""
|
"""
|
||||||
@ -134,6 +135,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",
|
||||||
@ -144,8 +150,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)
|
||||||
|
|
||||||
|
|
||||||
@ -153,9 +162,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:
|
||||||
|
Loading…
Reference in New Issue
Block a user