From ff18b9a73318cdeff34e005764c6e1d862799276 Mon Sep 17 00:00:00 2001 From: Anwar Sadath <37188392+asadath1395@users.noreply.github.com> Date: Wed, 20 Nov 2024 14:17:37 +0530 Subject: [PATCH] chore: Add support for new docker compose command to run V2 API (#17744) --- apps/api/v2/package.json | 2 +- apps/api/v2/scripts/docker-start.ts | 35 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 apps/api/v2/scripts/docker-start.ts diff --git a/apps/api/v2/package.json b/apps/api/v2/package.json index 90deb8ae7c..958184d2b7 100644 --- a/apps/api/v2/package.json +++ b/apps/api/v2/package.json @@ -11,7 +11,7 @@ "start": "nest start", "dev:build:watch": "yarn workspace @calcom/platform-constants build:watch & yarn workspace @calcom/platform-utils build:watch & yarn workspace @calcom/platform-types build:watch", "dev:build": "yarn workspace @calcom/platform-constants build && yarn workspace @calcom/platform-enums build && yarn workspace @calcom/platform-utils build && yarn workspace @calcom/platform-types build ", - "dev": "yarn dev:build && docker-compose up -d && yarn copy-swagger-module && yarn start --watch", + "dev": "yarn dev:build && ts-node scripts/docker-start.ts && yarn copy-swagger-module && yarn start --watch", "dev:no-docker": "yarn dev:build && yarn copy-swagger-module && yarn start --watch", "start:debug": "nest start --debug --watch", "start:prod": "node ./dist/apps/api/v2/src/main.js", diff --git a/apps/api/v2/scripts/docker-start.ts b/apps/api/v2/scripts/docker-start.ts new file mode 100644 index 0000000000..c71470dfc1 --- /dev/null +++ b/apps/api/v2/scripts/docker-start.ts @@ -0,0 +1,35 @@ +import { execSync } from "child_process"; + +function checkCommandExists(command: string): boolean { + try { + execSync(`${command} --version`, { stdio: "ignore" }); + return true; + } catch (e) { + return false; + } +} + +try { + // Check if docker is installed + if (!checkCommandExists("docker")) { + throw new Error("Docker is not installed"); + } + + // Try docker compose first (new syntax) + try { + execSync("docker compose version", { stdio: "ignore" }); + console.log("Starting containers with docker compose..."); + execSync("docker compose up -d", { stdio: "inherit" }); + } catch (e) { + // Fall back to docker-compose if the above fails + if (checkCommandExists("docker-compose")) { + console.log("Starting containers with docker-compose..."); + execSync("docker-compose up -d", { stdio: "inherit" }); + } else { + throw new Error("Neither 'docker compose' nor 'docker-compose' command is available"); + } + } +} catch (error) { + console.error(`Error: ${error instanceof Error ? error.message : "Unknown error occurred"}`); + process.exit(1); +}