UNPKG

navy

Version:

Quick and powerful development environments using Docker and Docker Compose

56 lines (44 loc) 1.46 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.dnsLookup = dnsLookup; exports.getExternalIP = getExternalIP; var _dns = _interopRequireDefault(require("dns")); const IPV4_FAMILY = 4; async function dnsLookup(hostname) { return await new Promise((resolve, reject) => { _dns.default.lookup(hostname, null, (err, ip, ipFamily) => { if (err || ipFamily !== IPV4_FAMILY) { reject(new Error('Failed to lookup hostname "' + hostname + '"')); } else { resolve(ip); } }); }); } async function getExternalIP(ipInConfig) { const dockerHost = process.env.DOCKER_HOST; // DEPRECATED use NAVY_EXTERNAL_IP instead if (process.env.NAVY_HOST) { return process.env.NAVY_HOST; } if (process.env.NAVY_EXTERNAL_IP) { // Custom external IP return process.env.NAVY_EXTERNAL_IP; } if (ipInConfig) { return await dnsLookup(ipInConfig); } if (dockerHost && dockerHost.indexOf('tcp://') !== -1) { // OSX with docker-machine, or a remote docker // dockerHost will be formatted like: // tcp://_._._._:_ // We only care about the IP address let ip = dockerHost.substring('tcp://'.length); ip = ip.substring(0, ip.lastIndexOf(':')).trim(); ip = await dnsLookup(ip); return ip; } // No custom docker host, assume localhost return '127.0.0.1'; }