diff --git a/changelog.d/5562.feature b/changelog.d/5562.feature
new file mode 100644
index 0000000000..85380bc517
--- /dev/null
+++ b/changelog.d/5562.feature
@@ -0,0 +1 @@
+Update Docker image to deprecate the use of environment variables for configuration, and make the use of a static configuration the default.
diff --git a/docker/start.py b/docker/start.py
index bdb703aebd..59527a5883 100755
--- a/docker/start.py
+++ b/docker/start.py
@@ -67,10 +67,11 @@ def generate_config_from_template(environ, ownership):
# generate a new secret and write it to a file
if os.path.exists(filename):
+ log("Reading %s from %s" % (secret, filename))
with open(filename) as handle:
value = handle.read()
else:
- log("Generating a random secret for {}".format(name))
+ log("Generating a random secret for {}".format(secret))
value = codecs.encode(os.urandom(32), "hex").decode()
with open(filename, "w") as handle:
handle.write(value)
@@ -100,6 +101,24 @@ def generate_config_from_template(environ, ownership):
convert("/conf/homeserver.yaml", config_path, environ)
convert("/conf/log.config", "/compiled/log.config", environ)
subprocess.check_output(["chown", "-R", ownership, "/data"])
+
+ # Hopefully we already have a signing key, but generate one if not.
+ subprocess.check_output(
+ [
+ "su-exec",
+ ownership,
+ "python",
+ "-m",
+ "synapse.app.homeserver",
+ "--config-path",
+ config_path,
+ # tell synapse to put generated keys in /data rather than /compiled
+ "--keys-directory",
+ "/data",
+ "--generate-keys",
+ ]
+ )
+
return config_path
@@ -145,19 +164,15 @@ def main(args, environ):
config_path = generate_config_from_template(environ, ownership)
args = [
+ "su-exec",
+ ownership,
"python",
"-m",
"synapse.app.homeserver",
"--config-path",
config_path,
- # tell synapse to put any generated keys in /data rather than /compiled
- "--keys-directory",
- "/data",
]
-
- # Generate missing keys and start synapse
- subprocess.check_output(args + ["--generate-keys"])
- os.execv("/sbin/su-exec", ["su-exec", ownership] + args)
+ os.execv("/sbin/su-exec", args)
if __name__ == "__main__":
|