From ccd84fa454f37ea77cee5d141ba9fd6e088c449e Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Tue, 17 Jan 2023 10:00:27 +0100 Subject: [PATCH] fix: build args docker compose --- apps/api/src/lib/buildPacks/compose.ts | 16 +++++++++++----- apps/server/src/lib/buildPacks/compose.ts | 16 +++++++++++++--- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/apps/api/src/lib/buildPacks/compose.ts b/apps/api/src/lib/buildPacks/compose.ts index b22c129ea..aef9e3435 100644 --- a/apps/api/src/lib/buildPacks/compose.ts +++ b/apps/api/src/lib/buildPacks/compose.ts @@ -52,17 +52,23 @@ export default async function (data) { } value['environment'] = [...environment, ...envs]; - let build = typeof value['build'] === 'undefined' ? {} : value['build']; + let build = typeof value['build'] === 'undefined' ? [] : value['build']; if (typeof build === 'string') { - build = { context: build } + build = { context: build }; } - let buildArgs = typeof build['args'] === 'undefined' ? [] : value['args']; + const buildArgs = typeof build['args'] === 'undefined' ? [] : build['args']; + let finalArgs = [...buildEnvs]; if (Object.keys(buildArgs).length > 0) { - buildArgs = Object.entries(buildArgs).map(([key, value]) => `${key}=${value}`); + for (const arg of buildArgs) { + const [key, _] = arg.split('='); + if (finalArgs.filter((env) => env.startsWith(key)).length === 0) { + finalArgs.push(arg); + } + } } value['build'] = { ...build, - args: [...buildArgs, ...buildEnvs] + args: finalArgs }; value['labels'] = labels; diff --git a/apps/server/src/lib/buildPacks/compose.ts b/apps/server/src/lib/buildPacks/compose.ts index 6b137c968..f34e1fddd 100644 --- a/apps/server/src/lib/buildPacks/compose.ts +++ b/apps/server/src/lib/buildPacks/compose.ts @@ -55,12 +55,22 @@ export default async function (data) { value['environment'] = [...environment, ...envs]; let build = typeof value['build'] === 'undefined' ? [] : value['build']; - if (Object.keys(build).length > 0) { - build = Object.entries(build).map(([key, value]) => `${key}=${value}`); + if (typeof build === 'string') { + build = { context: build }; + } + const buildArgs = typeof build['args'] === 'undefined' ? [] : build['args']; + let finalArgs = [...buildEnvs]; + if (Object.keys(buildArgs).length > 0) { + for (const arg of buildArgs) { + const [key, _] = arg.split('='); + if (finalArgs.filter((env) => env.startsWith(key)).length === 0) { + finalArgs.push(arg); + } + } } value['build'] = { ...build, - args: [...(build?.args || []), ...buildEnvs] + args: finalArgs }; value['labels'] = labels;