diff --git a/packages/dashmate/src/docker/DockerCompose.js b/packages/dashmate/src/docker/DockerCompose.js index 29c41f185b3..0303226bedf 100644 --- a/packages/dashmate/src/docker/DockerCompose.js +++ b/packages/dashmate/src/docker/DockerCompose.js @@ -362,21 +362,28 @@ class DockerCompose { const dockerComposeInstallLink = 'https://docs.docker.com/compose/install/'; const dockerInstallLink = 'https://docs.docker.com/engine/install/'; + const dockerPostInstallLinuxLink = 'https://docs.docker.com/engine/install/linux-postinstall/'; + const dockerContextLink = 'https://docs.docker.com/engine/context/working-with-contexts/'; // Check docker if (!hasbin.sync('docker')) { throw new Error(`Docker is not installed. Please follow instructions ${dockerInstallLink}`); } - const dockerVersion = await new Promise((resolve, reject) => { - this.docker.version((err, data) => { - if (err) { - return reject(err); - } - - return resolve(data.Version); + let dockerVersion; + try { + dockerVersion = await new Promise((resolve, reject) => { + this.docker.version((err, data) => { + if (err) { + return reject(err); + } + + return resolve(data.Version); + }); }); - }); + } catch (e) { + throw new Error(`Can't connect to Docker Engine: ${e.message}.\n\nPossible reasons:\n1. Docker is not started\n2. Permission issues ${dockerPostInstallLinuxLink}\n3. Wrong context ${dockerContextLink}`); + } if (semver.lt(dockerVersion.trim(), DockerCompose.DOCKER_MIN_VERSION)) { throw new Error(`Update Docker to version ${DockerCompose.DOCKER_MIN_VERSION} or higher. Please follow instructions ${dockerInstallLink}`); diff --git a/packages/dashmate/src/status/scopes/masternode.js b/packages/dashmate/src/status/scopes/masternode.js index e17de8d7380..5935688d2f0 100644 --- a/packages/dashmate/src/status/scopes/masternode.js +++ b/packages/dashmate/src/status/scopes/masternode.js @@ -79,7 +79,7 @@ function getMasternodeScopeFactory(dockerCompose, createRpcClient, getConnection masternode.proTxHash = proTxHash; masternode.status = status; - masternode.state = state; + masternode.state = state || MasternodeStateEnum.UNKNOWN; if (state === MasternodeStateEnum.READY) { const { dmnState } = masternodeStatus.result;