From 359a4237c379295e23960b5c99baeca647596d56 Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev <572431+veikab@users.noreply.github.com> Date: Fri, 8 May 2026 17:16:08 +0700 Subject: [PATCH] Load Vault before backend migrations --- Dockerfile | 2 +- src/entrypoint.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/entrypoint.ts diff --git a/Dockerfile b/Dockerfile index 21e9101..f728eac 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,4 +20,4 @@ COPY --from=build /app/src/generated ./dist/generated COPY --from=build /app/prisma ./prisma COPY --from=build /app/prisma.config.ts ./prisma.config.ts EXPOSE 4000 -CMD ["sh", "-c", "npm run prisma:migrate:deploy && npm run start"] +CMD ["node", "dist/entrypoint.js"] diff --git a/src/entrypoint.ts b/src/entrypoint.ts new file mode 100644 index 0000000..78b8bbf --- /dev/null +++ b/src/entrypoint.ts @@ -0,0 +1,26 @@ +import { spawn } from 'node:child_process'; + +import { loadVaultEnvironment } from './vault/env.js'; + +function run(command: string, args: string[]): Promise { + return new Promise((resolve, reject) => { + const child = spawn(command, args, { + env: process.env, + stdio: 'inherit', + }); + + child.on('error', reject); + child.on('exit', (code) => { + if (code === 0) { + resolve(); + return; + } + + reject(new Error(`${command} ${args.join(' ')} exited with ${code}`)); + }); + }); +} + +await loadVaultEnvironment(); +await run('npm', ['run', 'prisma:migrate:deploy']); +await import('./server.js');