added compose install

This commit is contained in:
lllllllillllllillll 2024-05-13 21:34:42 -07:00
parent c795cac009
commit eda852b89e
3 changed files with 206 additions and 174 deletions

View file

@ -251,6 +251,7 @@ export const InstallModal = async (req, res) => {
if (type == 'compose') {
let compose = readFileSync(`templates/compose/${input}/compose.yaml`, 'utf8');
let modal = readFileSync('./views/modals/compose.html', 'utf8');
modal = modal.replace(/AppName/g, input);
modal = modal.replace(/COMPOSE_CONTENT/g, compose);
res.send(modal);
return;

View file

@ -11,6 +11,35 @@ export const Install = async (req, res) => {
let data = req.body;
if (req.body.compose) {
let app = req.body.app;
writeFileSync(`./templates/compose/${app}/compose.yaml`, req.body.compose, function (err) { console.log(err) });
let compose = new DockerodeCompose(docker, `./templates/compose/${app}/compose.yaml`, `${app}`);
addAlert(req.session, 'success', `Installing ${app}. It should appear on the dashboard shortly.`);
try {
(async () => {
await compose.pull();
await compose.up();
const syslog = await Syslog.create({
user: req.session.user,
email: null,
event: "App Installation",
message: `${app} installed successfully`,
ip: req.socket.remoteAddress
});
})();
} catch (err) {
const syslog = await Syslog.create({
user: req.session.user,
email: null,
event: "App Installation",
message: `${app} installation failed: ${err}`,
ip: req.socket.remoteAddress
});
}
} else {
let { service_name, name, image, command_check, command, net_mode, restart_policy } = data;
let { port0, port1, port2, port3, port4, port5 } = data;
let { volume0, volume1, volume2, volume3, volume4, volume5 } = data;
@ -205,5 +234,6 @@ export const Install = async (req, res) => {
});
}
}
}
res.redirect('/');
}

View file

@ -13,7 +13,8 @@
<form action="/install" name="FormId_install" id="FormId_install" method="POST">
<textarea class="form-control" name="example-textarea-input" rows="30" placeholder="Content..">COMPOSE_CONTENT</textarea>
<input type="hidden" name="app" value="AppName"/>
<textarea class="form-control" name="compose" rows="30" placeholder="Content..">COMPOSE_CONTENT</textarea>
</form>