mirror of https://github.com/embarklabs/embark.git
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
const isDocker = (() => {
|
|
let isDocker;
|
|
|
|
const hostname = require('os').hostname();
|
|
const pattern = new RegExp(
|
|
'[0-9]+\:[a-z_-]+\:\/docker\/' + hostname + '[0-9a-z]+', 'i'
|
|
);
|
|
|
|
try {
|
|
isDocker = require('child_process')
|
|
.execSync(
|
|
'cat /proc/self/cgroup',
|
|
{stdio: ['ignore', 'pipe', 'ignore']}
|
|
)
|
|
.toString().match(pattern) !== null;
|
|
} catch (e) {
|
|
isDocker = false;
|
|
}
|
|
|
|
return isDocker;
|
|
})();
|
|
|
|
const defaultHost = isDocker ? '0.0.0.0' : 'localhost';
|
|
|
|
// when we're runing in Docker, we can expect (generally, in a development
|
|
// scenario) that the user would like to connect to the service in the
|
|
// container via the **host's** loopback address, so this helper can be used to
|
|
// swap 0.0.0.0 for localhost in code/messages that pertain to client-side
|
|
function canonicalHost(host) {
|
|
return isDocker && host === '0.0.0.0' ? 'localhost' : host;
|
|
}
|
|
|
|
function dockerHostSwap(host) {
|
|
return (isDocker && (host === 'localhost' || host === '127.0.0.1')) ? defaultHost : host;
|
|
}
|
|
|
|
const defaultCorsHost = canonicalHost(defaultHost);
|
|
|
|
module.exports = {
|
|
canonicalHost,
|
|
defaultCorsHost,
|
|
defaultHost,
|
|
dockerHostSwap,
|
|
isDocker
|
|
};
|