a2r
Version:
A2R Framework
64 lines (63 loc) • 2.89 kB
JavaScript
;
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;