Fix bug with spaces in docker run command

This commit is contained in:
Joseph Garrone 2024-08-18 20:56:25 +02:00
parent 225ced989c
commit 602de2e407

View File

@ -334,23 +334,25 @@ export async function command(params: { cliCommandOptions: CliCommandOptions })
});
} catch {}
const SPACE_PLACEHOLDER = "SPACE_PLACEHOLDER_xKLmdPd";
const dockerRunArgs: string[] = [
`-p ${cliCommandOptions.port}:8080`,
`--name ${CONTAINER_NAME}`,
`-e KEYCLOAK_ADMIN=admin`,
`-e KEYCLOAK_ADMIN_PASSWORD=admin`,
`-p${SPACE_PLACEHOLDER}${cliCommandOptions.port}:8080`,
`--name${SPACE_PLACEHOLDER}${CONTAINER_NAME}`,
`-e${SPACE_PLACEHOLDER}KEYCLOAK_ADMIN=admin`,
`-e${SPACE_PLACEHOLDER}KEYCLOAK_ADMIN_PASSWORD=admin`,
...(realmJsonFilePath === undefined
? []
: [
`-v ".${pathSep}${pathRelative(process.cwd(), realmJsonFilePath)}":/opt/keycloak/data/import/myrealm-realm.json`
`-v${SPACE_PLACEHOLDER}".${pathSep}${pathRelative(process.cwd(), realmJsonFilePath)}":/opt/keycloak/data/import/myrealm-realm.json`
]),
`-v "./${pathRelative(process.cwd(), jarFilePath_cacheDir)}":/opt/keycloak/providers/keycloak-theme.jar`,
`-v${SPACE_PLACEHOLDER}"./${pathRelative(process.cwd(), jarFilePath_cacheDir)}":/opt/keycloak/providers/keycloak-theme.jar`,
...extensionJarFilePaths.map(
jarFilePath =>
`-v ".${pathSep}${pathRelative(process.cwd(), jarFilePath)}":/opt/keycloak/providers/${pathBasename(jarFilePath)}`
`-v${SPACE_PLACEHOLDER}".${pathSep}${pathRelative(process.cwd(), jarFilePath)}":/opt/keycloak/providers/${pathBasename(jarFilePath)}`
),
...(keycloakMajorVersionNumber <= 20
? ["-e JAVA_OPTS=-Dkeycloak.profile=preview"]
? [`-e${SPACE_PLACEHOLDER}JAVA_OPTS=-Dkeycloak.profile=preview`]
: []),
...[
...buildContext.themeNames,
@ -374,7 +376,7 @@ export async function command(params: { cliCommandOptions: CliCommandOptions })
}))
.map(
({ localDirPath, containerDirPath }) =>
`-v ".${pathSep}${pathRelative(process.cwd(), localDirPath)}":${containerDirPath}:rw`
`-v${SPACE_PLACEHOLDER}".${pathSep}${pathRelative(process.cwd(), localDirPath)}":${containerDirPath}:rw`
),
...buildContext.environmentVariables
.map(({ name }) => ({ name, envValue: process.env[name] }))
@ -384,24 +386,27 @@ export async function command(params: { cliCommandOptions: CliCommandOptions })
.filter(exclude(undefined))
.map(
({ name, envValue }) =>
`--env ${name}='${envValue.replace(/'/g, "'\\''")}'`
`--env${SPACE_PLACEHOLDER}${name}='${envValue.replace(/'/g, "'\\''")}'`
),
...buildContext.startKeycloakOptions.dockerExtraArgs,
...buildContext.startKeycloakOptions.dockerExtraArgs.join(SPACE_PLACEHOLDER),
`${buildContext.startKeycloakOptions.dockerImage?.reference ?? "quay.io/keycloak/keycloak"}:${dockerImageTag}`,
"start-dev",
...(21 <= keycloakMajorVersionNumber && keycloakMajorVersionNumber < 24
? ["--features=declarative-user-profile"]
: []),
...(realmJsonFilePath === undefined ? [] : ["--import-realm"]),
...buildContext.startKeycloakOptions.keycloakExtraArgs
...buildContext.startKeycloakOptions.keycloakExtraArgs.join(SPACE_PLACEHOLDER)
];
console.log(
chalk.blue(
[
`$ docker run \\`,
...dockerRunArgs.map(
(line, i, arr) => ` ${line}${arr.length - 1 === i ? "" : " \\"}`
...dockerRunArgs
.map(arg => arg.replace(new RegExp(SPACE_PLACEHOLDER, "g"), " "))
.map(
(line, i, arr) =>
` ${line}${arr.length - 1 === i ? "" : " \\"}`
)
].join("\n")
)
@ -409,7 +414,7 @@ export async function command(params: { cliCommandOptions: CliCommandOptions })
const child = child_process.spawn(
"docker",
["run", ...dockerRunArgs.map(line => line.split(" ")).flat()],
["run", ...dockerRunArgs.map(line => line.split(SPACE_PLACEHOLDER)).flat()],
{ shell: true }
);