From dd9ea8cd3a242d165f6ffcdd327d12aa5f69e6bc Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 6 Feb 2024 09:20:54 +0000 Subject: [PATCH 1/4] Add log passthrough support part of FlowFuse/flowfuse#3324 --- README.md | 4 +++- docker.js | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ae257ae..c2dd609 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,13 @@ driver: socket: /var/run/docker.sock registry: containers.flowforge.com privateCA: /full/path/to/chain.pem + logPasthrough: true ``` - `registry` is the Docker Registry to load Stack Containers from (default: Docker Hub) - `socket` is the path to the docker unix domain socket (default: /var/run/docker.sock) - - privateCA: is the fully qualified path to a pem file containing trusted CA cert chain (default: not set) + - `privateCA`: is the fully qualified path to a pem file containing trusted CA cert chain (default: not set) + - `logPassthrough` Have Node-RED logs printed in JSON format to container stdout (default: false) ### Configuration via environment variables diff --git a/docker.js b/docker.js index c6bad72..e28a770 100644 --- a/docker.js +++ b/docker.js @@ -86,6 +86,10 @@ const createContainer = async (project, domain) => { contOptions.Env.push(`FORGE_NR_SECRET=${credentialSecret}`) } + if (this.options.logPassthrough) { + contOptions.Env.push('FORGE_LOG_PASSTHROUGH=true') + } + if (this._app.config.driver.options.privateCA && fs.existsSync(this._app.config.driver.options.privateCA)) { contOptions.Binds = [ `${this._app.config.driver.options.privateCA}:/usr/local/ssl-certs/chain.pem` From bf719f09b2ab01afeda9d16981fa48d6f0f68c17 Mon Sep 17 00:00:00 2001 From: Stephen McLaughlin <44235289+Steve-Mcl@users.noreply.github.com> Date: Mon, 12 Feb 2024 09:53:34 +0000 Subject: [PATCH 2/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c2dd609..be7c5f9 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ driver: socket: /var/run/docker.sock registry: containers.flowforge.com privateCA: /full/path/to/chain.pem - logPasthrough: true + logPassthrough: true ``` - `registry` is the Docker Registry to load Stack Containers from (default: Docker Hub) From 1c310bf53d1773c0da355f01b74824989043d5d5 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 12 Feb 2024 09:58:25 +0000 Subject: [PATCH 3/4] Protect against options not being set --- docker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker.js b/docker.js index e28a770..d70a64d 100644 --- a/docker.js +++ b/docker.js @@ -86,7 +86,7 @@ const createContainer = async (project, domain) => { contOptions.Env.push(`FORGE_NR_SECRET=${credentialSecret}`) } - if (this.options.logPassthrough) { + if (this._options?.logPassthrough) { contOptions.Env.push('FORGE_LOG_PASSTHROUGH=true') } From 2d9b5060e5cc2f3a046aaedf6c239acdf845bc91 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 12 Feb 2024 10:06:06 +0000 Subject: [PATCH 4/4] Ensure options exists --- docker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker.js b/docker.js index d70a64d..9756ded 100644 --- a/docker.js +++ b/docker.js @@ -90,7 +90,7 @@ const createContainer = async (project, domain) => { contOptions.Env.push('FORGE_LOG_PASSTHROUGH=true') } - if (this._app.config.driver.options.privateCA && fs.existsSync(this._app.config.driver.options.privateCA)) { + if (this._app.config.driver.options?.privateCA && fs.existsSync(this._app.config.driver.options?.privateCA)) { contOptions.Binds = [ `${this._app.config.driver.options.privateCA}:/usr/local/ssl-certs/chain.pem` ]