updatenotification: avoid using pm2 when running in docker container (#3484)

related to #3480 

Change module updatenotification so that it can work without `pm2` in a
docker container.

It now tests if file `/.dockerenv` exists and if so `require("pm2")` is
never called.
This commit is contained in:
Karsten Hassel 2024-06-28 22:33:21 +02:00 committed by GitHub
parent c89c3edf97
commit 92ac3895a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 2 deletions

View File

@ -9,7 +9,7 @@ This project adheres to [Semantic Versioning](https://semver.org/).
_This release is scheduled to be released on 2024-07-01._
Thanks to: @btoconnor, @bugsounet, @khassel, @kleinmantara and @WallysWellies.
Thanks to: @btoconnor, @bugsounet, @JasonStieber, @khassel, @kleinmantara and @WallysWellies.
> ⚠️ This release needs nodejs version >= v20
@ -29,6 +29,7 @@ Thanks to: @btoconnor, @bugsounet, @khassel, @kleinmantara and @WallysWellies.
- [core] use node >= v20 (#3462)
- [core] Update `config.js.sample` to use openmeteo as weather provider which needs no api key
- [tests] Use latest@version of node for `automated-tests.yaml` (#3483)
- [updatenotification] Avoid using pm2 when running in docker container
### Fixed

View File

@ -1,6 +1,6 @@
const Exec = require("node:child_process").exec;
const Spawn = require("node:child_process").spawn;
const pm2 = require("pm2");
const fs = require("node:fs");
const Log = require("logger");
@ -139,6 +139,7 @@ class Updater {
// restart MagicMiror with "pm2"
pm2Restart () {
Log.info("updatenotification: PM2 will restarting MagicMirror...");
const pm2 = require("pm2");
pm2.restart(this.PM2, (err, proc) => {
if (err) {
Log.error("updatenotification:[PM2] restart Error", err);
@ -160,6 +161,14 @@ class Updater {
check_PM2_Process () {
Log.info("updatenotification: Checking PM2 using...");
return new Promise((resolve) => {
if (fs.existsSync("/.dockerenv")) {
Log.info("updatenotification: Running in docker container, not using PM2 ...");
this.usePM2 = false;
resolve(false);
return;
}
const pm2 = require("pm2");
pm2.connect((err) => {
if (err) {
Log.error("updatenotification: [PM2]", err);