Browse Source

fix(dockerservice): fix docker-compose not being found in PATH env

feat/auto-update
jamaljsr 5 years ago
parent
commit
41f49d9751
  1. 8
      electron/index.ts
  2. 5
      package.json
  3. 17
      src/lib/docker/dockerService.ts
  4. 14
      yarn.lock

8
electron/index.ts

@ -1,6 +1,7 @@
import electronDebug from 'electron-debug';
import isNotPackaged from 'electron-is-dev';
import { debug, error } from 'electron-log';
import { sync } from 'shell-env';
import WindowManager from './windowManager';
const isDev = isNotPackaged && process.env.NODE_ENV !== 'production';
@ -12,6 +13,13 @@ debug(`Starting Electron main process`);
// add keyboard shortcuts and auto open dev tools for all windows
electronDebug({ isEnabled: isDev });
// merge in env vars from the user's shell (i.e. PATH) so that
// docker commands can be executed
process.env = {
...process.env,
...sync(),
};
try {
const windowManager = new WindowManager(isDev);
windowManager.start();

5
package.json

@ -23,7 +23,7 @@
"lint:fix": "yarn lint --fix",
"package": "yarn build && yarn package:electron",
"package:ci": "yarn postinstall && yarn build && yarn package:electron --publish onTagOrDraft",
"package:electron": "electron-builder build -c.extraMetadata.main=build/main/index.js --config .electronbuildrc",
"package:electron": "electron-builder build -c.extraMetadata.main=build/main/electron/index.js --config .electronbuildrc",
"postinstall": "electron-builder install-app-deps",
"prebuild": "tsc -p electron/tsconfig.json",
"release": "standard-version --no-verify",
@ -48,7 +48,8 @@
"electron-log": "3.0.8",
"electron-window-state": "5.0.3",
"js-yaml": "3.13.1",
"lndconnect": "0.2.10"
"lndconnect": "0.2.10",
"shell-env": "^3.0.0"
},
"devDependencies": {
"@commitlint/cli": "8.2.0",

17
src/lib/docker/dockerService.ts

@ -1,3 +1,4 @@
import { remote } from 'electron';
import { info } from 'electron-log';
import { join } from 'path';
import * as compose from 'docker-compose';
@ -47,7 +48,7 @@ class DockerService implements DockerLibrary {
async start(network: Network) {
info(`Starting docker containers for ${network.name}`);
info(` - path: ${network.path}`);
const result = await this.execute(compose.upAll, { cwd: network.path });
const result = await this.execute(compose.upAll, this.getArgs(network));
info(`Network started:\n ${result.out || result.err}`);
}
@ -58,7 +59,7 @@ class DockerService implements DockerLibrary {
async stop(network: Network) {
info(`Stopping docker containers for ${network.name}`);
info(` - path: ${network.path}`);
const result = await this.execute(compose.down, { cwd: network.path });
const result = await this.execute(compose.down, this.getArgs(network));
info(`Network stopped:\n ${result.out || result.err}`);
}
@ -79,7 +80,7 @@ class DockerService implements DockerLibrary {
} catch (e) {
e.err = stripAnsi(e.err);
info(`docker cmd failed: ${JSON.stringify(e)}`);
throw new Error(e.err);
throw new Error(e.err || JSON.stringify(e));
}
}
@ -109,6 +110,16 @@ class DockerService implements DockerLibrary {
return { networks: [], charts: {} };
}
}
private getArgs(network: Network) {
return {
cwd: network.path,
env: {
...process.env,
...(remote ? remote.process.env : {}),
},
};
}
}
export default new DockerService();

14
yarn.lock

@ -6320,6 +6320,11 @@ default-gateway@^4.2.0:
execa "^1.0.0"
ip-regex "^2.1.0"
default-shell@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/default-shell/-/default-shell-1.0.1.tgz#752304bddc6174f49eb29cb988feea0b8813c8bc"
integrity sha1-dSMEvdxhdPSespy5iP7qC4gTyLw=
defer-to-connect@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e"
@ -16154,6 +16159,15 @@ shebang-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
shell-env@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/shell-env/-/shell-env-3.0.0.tgz#42484ebd0798ee321ba69f6151f2aeab13fde1d4"
integrity sha512-zE0lGldowbCLnnorLnOUO6gLSwEoW4u+qWcEV1HH2qje5sIg0PvBd+8ro74EgSZv0MBEP2dROD6vSKhGDbUIMQ==
dependencies:
default-shell "^1.0.1"
execa "^1.0.0"
strip-ansi "^5.2.0"
shell-quote@1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"

Loading…
Cancel
Save