Skip to content
Snippets Groups Projects
Unverified Commit 3be2abd0 authored by Richard van der Hoff's avatar Richard van der Hoff Committed by GitHub
Browse files

Kill off deprecated "config-on-the-fly" docker mode (#6918)

Lots of people seem to get confused by this mode, and it's been deprecated
since Synapse 1.1.0. It's time for it to go.
parent bc831d1d
No related branches found
No related tags found
No related merge requests found
The deprecated "generate-config-on-the-fly" mode is no longer supported.
...@@ -110,12 +110,12 @@ argument to `docker run`. ...@@ -110,12 +110,12 @@ argument to `docker run`.
## Legacy dynamic configuration file support ## Legacy dynamic configuration file support
For backwards-compatibility only, the docker image supports creating a dynamic The docker image used to support creating a dynamic configuration file based
configuration file based on environment variables. This is now deprecated, but on environment variables. This is no longer supported, and an error will be
is enabled when the `SYNAPSE_SERVER_NAME` variable is set (and `generate` is raised if you try to run synapse without a config file.
not given).
To migrate from a dynamic configuration file to a static one, run the docker It is, however, possible to generate a static configuration file based on
the environment variables that were previously used. To do this, run the docker
container once with the environment variables set, and `migrate_config` container once with the environment variables set, and `migrate_config`
command line option. For example: command line option. For example:
...@@ -127,15 +127,20 @@ docker run -it --rm \ ...@@ -127,15 +127,20 @@ docker run -it --rm \
matrixdotorg/synapse:latest migrate_config matrixdotorg/synapse:latest migrate_config
``` ```
This will generate the same configuration file as the legacy mode used, but This will generate the same configuration file as the legacy mode used, and
will store it in `/data/homeserver.yaml` instead of a temporary location. You will store it in `/data/homeserver.yaml`. You can then use it as shown above at
can then use it as shown above at [Running synapse](#running-synapse). [Running synapse](#running-synapse).
Note that the defaults used in this configuration file may be different to
those when generating a new config file with `generate`: for example, TLS is
enabled by default in this mode. You are encouraged to inspect the generated
configuration file and edit it to ensure it meets your needs.
## Building the image ## Building the image
If you need to build the image from a Synapse checkout, use the following `docker If you need to build the image from a Synapse checkout, use the following `docker
build` command from the repo's root: build` command from the repo's root:
``` ```
docker build -t matrixdotorg/synapse -f docker/Dockerfile . docker build -t matrixdotorg/synapse -f docker/Dockerfile .
``` ```
......
...@@ -188,11 +188,6 @@ def main(args, environ): ...@@ -188,11 +188,6 @@ def main(args, environ):
else: else:
ownership = "{}:{}".format(desired_uid, desired_gid) ownership = "{}:{}".format(desired_uid, desired_gid)
log(
"Container running as UserID %s:%s, ENV (or defaults) requests %s:%s"
% (os.getuid(), os.getgid(), desired_uid, desired_gid)
)
if ownership is None: if ownership is None:
log("Will not perform chmod/su-exec as UserID already matches request") log("Will not perform chmod/su-exec as UserID already matches request")
...@@ -213,38 +208,30 @@ def main(args, environ): ...@@ -213,38 +208,30 @@ def main(args, environ):
if mode is not None: if mode is not None:
error("Unknown execution mode '%s'" % (mode,)) error("Unknown execution mode '%s'" % (mode,))
if "SYNAPSE_SERVER_NAME" in environ: config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data")
# backwards-compatibility generate-a-config-on-the-fly mode config_path = environ.get("SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml")
if "SYNAPSE_CONFIG_PATH" in environ:
if not os.path.exists(config_path):
if "SYNAPSE_SERVER_NAME" in environ:
error( error(
"SYNAPSE_SERVER_NAME can only be combined with SYNAPSE_CONFIG_PATH " """\
"in `generate` or `migrate_config` mode. To start synapse using a " Config file '%s' does not exist.
"config file, unset the SYNAPSE_SERVER_NAME environment variable."
The synapse docker image no longer supports generating a config file on-the-fly
based on environment variables. You can migrate to a static config file by
running with 'migrate_config'. See the README for more details.
"""
% (config_path,)
) )
config_path = "/compiled/homeserver.yaml" error(
log( "Config file '%s' does not exist. You should either create a new "
"Generating config file '%s' on-the-fly from environment variables.\n" "config file by running with the `generate` argument (and then edit "
"Note that this mode is deprecated. You can migrate to a static config\n" "the resulting file before restarting) or specify the path to an "
"file by running with 'migrate_config'. See the README for more details." "existing config file with the SYNAPSE_CONFIG_PATH variable."
% (config_path,) % (config_path,)
) )
generate_config_from_template("/compiled", config_path, environ, ownership)
else:
config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data")
config_path = environ.get(
"SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml"
)
if not os.path.exists(config_path):
error(
"Config file '%s' does not exist. You should either create a new "
"config file by running with the `generate` argument (and then edit "
"the resulting file before restarting) or specify the path to an "
"existing config file with the SYNAPSE_CONFIG_PATH variable."
% (config_path,)
)
log("Starting synapse with config file " + config_path) log("Starting synapse with config file " + config_path)
args = ["python", "-m", synapse_worker, "--config-path", config_path] args = ["python", "-m", synapse_worker, "--config-path", config_path]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment