mirror of
https://github.com/hoppscotch/hoppscotch
synced 2024-11-21 22:50:51 +00:00
afea75694f
* refactor: slim down the backend containers * refactor: make containers run as non-root user in container * chore: correct casing for the build stage definitions * chore: remove docker compose version field as its obsolete * chore: optimise chown and chmod into the COPY command itself * chore: add package overrides for packages with reported vulns * chore: add pnpm to containers + set workdir dir to the backend project * fix: permission issues with the fe containers * chore: define env variables on AIO
74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
#!/usr/local/bin/node
|
|
// @ts-check
|
|
|
|
import { execSync, spawn } from "child_process"
|
|
import fs from "fs"
|
|
import process from "process"
|
|
|
|
function runChildProcessWithPrefix(command, args, prefix) {
|
|
const childProcess = spawn(command, args);
|
|
|
|
childProcess.stdout.on('data', (data) => {
|
|
const output = data.toString().trim().split('\n');
|
|
output.forEach((line) => {
|
|
console.log(`${prefix} | ${line}`);
|
|
});
|
|
});
|
|
|
|
childProcess.stderr.on('data', (data) => {
|
|
const error = data.toString().trim().split('\n');
|
|
error.forEach((line) => {
|
|
console.error(`${prefix} | ${line}`);
|
|
});
|
|
});
|
|
|
|
childProcess.on('close', (code) => {
|
|
console.log(`${prefix} Child process exited with code ${code}`);
|
|
});
|
|
|
|
childProcess.on('error', (stuff) => {
|
|
console.log("error")
|
|
console.log(stuff)
|
|
})
|
|
|
|
return childProcess
|
|
}
|
|
|
|
const envFileContent = Object.entries(process.env)
|
|
.filter(([env]) => env.startsWith("VITE_"))
|
|
.map(([env, val]) => `${env}=${
|
|
(val.startsWith("\"") && val.endsWith("\""))
|
|
? val
|
|
: `"${val}"`
|
|
}`)
|
|
.join("\n")
|
|
|
|
fs.writeFileSync("build.env", envFileContent)
|
|
|
|
execSync(`npx import-meta-env -x build.env -e build.env -p "/site/**/*"`)
|
|
|
|
fs.rmSync("build.env")
|
|
|
|
const caddyFileName = process.env.ENABLE_SUBPATH_BASED_ACCESS === 'true' ? 'aio-subpath-access.Caddyfile' : 'aio-multiport-setup.Caddyfile'
|
|
const caddyProcess = runChildProcessWithPrefix("caddy", ["run", "--config", `/etc/caddy/${caddyFileName}`, "--adapter", "caddyfile"], "App/Admin Dashboard Caddy")
|
|
const backendProcess = runChildProcessWithPrefix("node", ["/dist/backend/dist/main.js"], "Backend Server")
|
|
|
|
caddyProcess.on("exit", (code) => {
|
|
console.log(`Exiting process because Caddy Server exited with code ${code}`)
|
|
process.exit(code)
|
|
})
|
|
|
|
backendProcess.on("exit", (code) => {
|
|
console.log(`Exiting process because Backend Server exited with code ${code}`)
|
|
process.exit(code)
|
|
})
|
|
|
|
process.on('SIGINT', () => {
|
|
console.log("SIGINT received, exiting...")
|
|
|
|
caddyProcess.kill("SIGINT")
|
|
backendProcess.kill("SIGINT")
|
|
|
|
process.exit(0)
|
|
})
|