From 7a13cd12f66cad735bd9df58637fa826f4fadc65 Mon Sep 17 00:00:00 2001 From: Kevin Bates Date: Tue, 11 Feb 2020 08:15:46 -0800 Subject: [PATCH] Add env variable support for port options In order to better support use cases relating to containerized environments, this change adds environment variable support for the `--port` option. Since anyone setting a specific port probably doesn't want port retry logic enabled, the `--port-retries` option has also been backed by an env. Option `--port` will be backed by env `JUPYTER_PORT` and still defaults to `8888`. Option `--port-retries` will be backed by env `JUPYTER_PORT_RETRIES` and still defaults to `50`. The CLI options will override those set via the envrionment, but environment values override those set via configuration files. Closes #5212 --- notebook/notebookapp.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/notebook/notebookapp.py b/notebook/notebookapp.py index a657ce82d5..66c2f7e194 100755 --- a/notebook/notebookapp.py +++ b/notebook/notebookapp.py @@ -707,14 +707,27 @@ def _valdate_ip(self, proposal): or containerized setups for example).""") ) - port = Integer(8888, config=True, - help=_("The port the notebook server will listen on.") + port_env = 'JUPYTER_PORT' + port_default_value = 8888 + port = Integer(port_default_value, config=True, + help=_("The port the notebook server will listen on (env: JUPYTER_PORT).") ) - port_retries = Integer(50, config=True, - help=_("The number of additional ports to try if the specified port is not available.") + @default('port') + def port_default(self): + return int(os.getenv(self.port_env, self.port_default_value)) + + port_retries_env = 'JUPYTER_PORT_RETRIES' + port_retries_default_value = 50 + port_retries = Integer(port_retries_default_value, config=True, + help=_("The number of additional ports to try if the specified port is not " + "available (env: JUPYTER_PORT_RETRIES).") ) + @default('port_retries') + def port_retries_default(self): + return int(os.getenv(self.port_retries_env, self.port_retries_default_value)) + certfile = Unicode(u'', config=True, help=_("""The full path to an SSL/TLS certificate file.""") )