diff --git a/packages/dashmate/src/createDIContainer.js b/packages/dashmate/src/createDIContainer.js index 7d36704f686..b974614e067 100644 --- a/packages/dashmate/src/createDIContainer.js +++ b/packages/dashmate/src/createDIContainer.js @@ -93,6 +93,7 @@ const registerMasternodeGuideTaskFactory = require('./listr/tasks/setup/regular/ const configureNodeTaskFactory = require('./listr/tasks/setup/regular/configureNodeTaskFactory'); const configureSSLCertificateTaskFactory = require('./listr/tasks/setup/regular/configureSSLCertificateTaskFactory'); const createHttpApiServerFactory = require('./helper/api/createHttpApiServerFactory'); +const resolveDockerSocketPath = require('./docker/resolveDockerSocketPath'); async function createDIContainer() { const container = createAwilixContainer({ @@ -147,9 +148,18 @@ async function createDIContainer() { /** * Docker */ + + const dockerOptions = {}; + try { + dockerOptions.socketPath = await resolveDockerSocketPath(); + } catch (e) { + // Here we skip possible error which is happening if docker is not installed or not running + // It will be handled in the logic below + } + container.register({ docker: asFunction(() => ( - new Docker() + new Docker(dockerOptions) )).singleton(), dockerCompose: asClass(DockerCompose).singleton(), startedContainers: asFunction(() => ( diff --git a/packages/dashmate/src/docker/resolveDockerSocketPath.js b/packages/dashmate/src/docker/resolveDockerSocketPath.js new file mode 100644 index 00000000000..0ff0ddacbc6 --- /dev/null +++ b/packages/dashmate/src/docker/resolveDockerSocketPath.js @@ -0,0 +1,17 @@ +const { promisify } = require('util'); +const path = require('path'); +const exec = promisify(require('child_process').exec); + +/** + * Returns docker socket path + * @returns {Promise} + */ +async function resolveDockerSocketPath() { + const { stdout } = await exec('docker context inspect'); + + const output = JSON.parse(stdout); + + return path.normalize(output[0].Endpoints.docker.Host.split(':').pop()); +} + +module.exports = resolveDockerSocketPath;