link-stack/docker/scripts/docker.js

41 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2024-03-16 23:11:48 +01:00
const { spawn } = require("child_process");
2025-07-02 12:07:12 +02:00
const path = require('path');
2024-03-16 23:11:48 +01:00
const app = process.argv[2];
const command = process.argv[3];
const files = {
2024-05-15 14:39:33 +02:00
all: ["zammad", "postgresql", "bridge", "opensearch", "leafcutter", "link", "signal-cli-rest-api"],
2024-03-16 23:11:48 +01:00
linkDev: ["zammad", "postgresql", "opensearch"],
link: ["zammad", "postgresql", "opensearch", "link"],
linkOnly: ["link"],
2024-03-16 23:11:48 +01:00
leafcutterDev: ["opensearch"],
leafcutter: ["opensearch", "leafcutter"],
opensearch: ["opensearch"],
2024-05-15 14:39:33 +02:00
bridgeDev: ["zammad", "postgresql", "signal-cli-rest-api"],
bridge: ["zammad", "postgresql", "bridge", "signal-cli-rest-api"],
2024-03-16 23:11:48 +01:00
zammad: ["zammad", "postgresql", "opensearch"],
};
2025-07-02 12:07:12 +02:00
const envFile = path.resolve(process.cwd(), '.env');
2024-03-16 23:11:48 +01:00
const finalFiles = files[app]
.map((file) => ['-f', `docker/compose/${file}.yml`]).flat();
2025-07-02 12:07:12 +02:00
// Add bridge-dev.yml for dev commands that include zammad
const devAppsWithZammad = ['linkDev', 'bridgeDev', 'all'];
if (devAppsWithZammad.includes(app) && files[app].includes('zammad')) {
finalFiles.push('-f', 'docker-compose.bridge-dev.yml');
}
2025-01-15 14:15:02 +01:00
const finalCommand = command === "up" ? ["up", "-d", "--remove-orphans"] : [command];
2025-07-02 12:07:12 +02:00
const dockerCompose = spawn('docker', ['compose', '--env-file', envFile, ...finalFiles, ...finalCommand]);
2024-03-16 23:11:48 +01:00
dockerCompose.stdout.on('data', (data) => {
2025-01-22 17:50:38 +01:00
console.info(`${data}`);
2024-03-17 12:58:25 +01:00
});
dockerCompose.stderr.on('data', (data) => {
2025-01-22 17:50:38 +01:00
console.info(`${data}`);
2024-03-16 23:11:48 +01:00
});