From e9d4ec74946df9477cc6a6c4aed688a97a29b3bd Mon Sep 17 00:00:00 2001 From: Paul Pacheco Date: Thu, 13 Aug 2020 12:27:11 -0500 Subject: [PATCH] Separate port and host in configuration Many cloud providers have an environment variable PORT. an application is supposed to listen in that port. Currently, the yaml for listen address looks like this: ```yaml backend: listen: 0.0.0.0:7000 ``` the problem is that I can't use the port environment variable there. This PR changes it to this: ```yaml backend: listen: host: 0.0.0.0 port: 7000 ``` if I want to use the PORT environment variable, now I can do it like this: ```yaml backend: listen: host: 0.0.0.0 port: $secret: env: PORT ``` --- app-config.yaml | 4 +++- packages/backend-common/src/service/lib/config.ts | 15 +++++++++++---- .../templates/default-app/app-config.yaml | 4 +++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 54684b10a9..92b35da31d 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -4,7 +4,9 @@ app: backend: baseUrl: http://localhost:7000 - listen: 0.0.0.0:7000 + listen: + host: 0.0.0.0 + port: 7000 cors: origin: http://localhost:3000 methods: [GET, POST, PUT, DELETE] diff --git a/packages/backend-common/src/service/lib/config.ts b/packages/backend-common/src/service/lib/config.ts index 064eacc4f2..49f8dc4f04 100644 --- a/packages/backend-common/src/service/lib/config.ts +++ b/packages/backend-common/src/service/lib/config.ts @@ -37,11 +37,18 @@ export type BaseOptions = { * ``` */ export function readBaseOptions(config: ConfigReader): BaseOptions { - // TODO(freben): Expand this to support more addresses and perhaps optional - const { host, port } = parseListenAddress(config.getString('listen')); + if (typeof config.get('listen') === 'string') { + // TODO(freben): Expand this to support more addresses and perhaps optional + const { host, port } = parseListenAddress(config.getString('listen')); + return removeUnknown({ + listenPort: port, + listenHost: host, + }); + } + return removeUnknown({ - listenPort: port, - listenHost: host, + listenPort: config.getOptionalNumber('listen.port'), + listenHost: config.getOptionalString('listen.host'), }); } diff --git a/packages/create-app/templates/default-app/app-config.yaml b/packages/create-app/templates/default-app/app-config.yaml index 04a7913286..addd74ab67 100644 --- a/packages/create-app/templates/default-app/app-config.yaml +++ b/packages/create-app/templates/default-app/app-config.yaml @@ -7,7 +7,9 @@ organization: backend: baseUrl: http://localhost:7000 - listen: 0.0.0.0:7000 + listen: + host: 0.0.0.0 + port: 7000 cors: origin: http://localhost:3000 methods: [GET, POST, PUT, DELETE]