UNPKG

a2r

Version:
64 lines (63 loc) 2.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const execa_1 = __importDefault(require("execa")); const chalk_1 = __importDefault(require("chalk")); const get_port_1 = __importDefault(require("get-port")); const fs_1 = require("@a2r/fs"); const devSettings_1 = require("./devSettings"); const colors_1 = require("./colors"); const docker_1 = require("./docker"); const settings_1 = require("../settings"); const createDevServerDocker = async (settings, devServerName, devServerModules, devServerEnv, keys) => { var _a; const { devServer, db } = settings; const devServerImage = `${devServer.imageName}:${devServer.version}`; await (0, docker_1.stop)(devServerName); await (0, docker_1.rm)(devServerName); const desiredServerPort = parseInt((((_a = devServer.env) === null || _a === void 0 ? void 0 : _a.PORT) || ''), 10); const serverPort = await (0, get_port_1.default)({ port: desiredServerPort || undefined }); if (desiredServerPort && desiredServerPort !== serverPort) { (0, colors_1.log)(`Port ${chalk_1.default.whiteBright(desiredServerPort)} is already in use, starting server at port ${chalk_1.default.greenBright(serverPort)}`); } const devSettings = await (0, devSettings_1.init)(serverPort, devServerName, devServerImage, keys); const devServerEnvVars = Object.entries(devSettings.keys).map(([key, value]) => `${key}=${value}`); if (db && db.url && db.name) { const { url, name } = db; devServerEnvVars.push(`${settings_1.mongoUrlParam}=${url}`); devServerEnvVars.push(`${settings_1.mongoDbNameParam}=${name}`); } else { // await ensureDir(dbDataInternalPath); // const dbName = db && db.name ? db.name : cleanProjectName; // devServerEnvVars.push(`${mongoUrlParam}=mongodb://${cleanProjectName}-db:27017`); // devServerEnvVars.push(`${mongoDbNameParam}=${dbName}`); } Object.entries(devServer.env || {}).forEach(([key, value]) => { if (key === 'PORT') { devServerEnvVars.push(`PORT=${devSettings.server.port}`); } else { devServerEnvVars.push(`${key}=${value}`); } }); await (0, fs_1.writeFile)(devServerEnv, devServerEnvVars.join('\n')); const networkParams = ['-p', `${serverPort}:${serverPort}`]; const dockerParams = [ 'create', '-it', '--env-file', devServerEnv, '-v', `${devServerModules}:${settings_1.dockerServerPath}/node_modules`, ...networkParams, '--name', devServerName, devServerImage, ]; await (0, execa_1.default)('docker', dockerParams); return devSettings; }; exports.default = createDevServerDocker;