From 9a5a1bf55584221bad07c0b959f51ca40b13ab4e Mon Sep 17 00:00:00 2001 From: jialin Date: Mon, 2 Feb 2026 15:57:16 +0800 Subject: [PATCH] chore: add mutiple additional volume --- src/locales/en-US/clusters.ts | 2 +- src/locales/ja-JP/clusters.ts | 4 ++-- src/locales/ru-RU/clusters.ts | 4 ++-- src/locales/zh-CN/clusters.ts | 2 +- src/pages/resources/config/gpu-driver.ts | 15 ++++++++++++++- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/locales/en-US/clusters.ts b/src/locales/en-US/clusters.ts index f82ceff8..c585f421 100644 --- a/src/locales/en-US/clusters.ts +++ b/src/locales/en-US/clusters.ts @@ -91,7 +91,7 @@ export default { 'clusters.addworker.notSpecified': 'Not Specified', 'clusters.addworker.autoDetect': 'Auto', 'clusters.addworker.extraVolume.holder': - 'e.g. /data/models (path must start with /)', + 'e.g. /data/models (path must start with /). Use commas to separate multiple paths.', 'clusters.addworker.cacheVolume.holder': 'e.g. /data/cache (path must start with /)', 'clusters.addworker.vendorNotes.title': 'Notes for {vendor} Device', diff --git a/src/locales/ja-JP/clusters.ts b/src/locales/ja-JP/clusters.ts index cdc74550..f4a64699 100644 --- a/src/locales/ja-JP/clusters.ts +++ b/src/locales/ja-JP/clusters.ts @@ -91,7 +91,7 @@ export default { 'clusters.addworker.notSpecified': 'Not Specified', 'clusters.addworker.autoDetect': 'Auto', 'clusters.addworker.extraVolume.holder': - 'e.g. /data/models (path must start with /)', + 'e.g. /data/models (path must start with /). Use commas to separate multiple paths.', 'clusters.addworker.cacheVolume.holder': 'e.g. /data/cache (path must start with /)', 'clusters.addworker.vendorNotes.title': 'Notes for {vendor} Device', @@ -200,7 +200,7 @@ export default { // 65. 'clusters.addworker.workerExternalIP': 'Worker External Address', // 65. 'clusters.addworker.notSpecified': 'Not Specified', // 66. 'clusters.addworker.autoDetect': 'Auto', -// 67. 'clusters.addworker.extraVolume.holder': 'e.g. /data/models (path must start with /)' +// 67. 'clusters.addworker.extraVolume.holder': 'e.g. /data/models (path must start with /). Use commas to separate multiple paths.', // 68. 'clusters.addworker.vendorNotes.title': 'Notes for {vendor} Device', // 69. 'clusters.button.genToken': 'Need to create a new token? Click here.', // 70. 'clusters.addworker.amdNotes-01': `If the /opt/rocm directory does not exist, please create a symbolic link pointing to the ROCm installed path: ln -s /path/to/rocm /opt/rocm.`, diff --git a/src/locales/ru-RU/clusters.ts b/src/locales/ru-RU/clusters.ts index 2e72642b..b841564a 100644 --- a/src/locales/ru-RU/clusters.ts +++ b/src/locales/ru-RU/clusters.ts @@ -91,9 +91,9 @@ export default { 'clusters.addworker.notSpecified': 'Не указано', 'clusters.addworker.autoDetect': 'Автоопределение', 'clusters.addworker.extraVolume.holder': - 'напр. /data/models (путь должен начинаться с /)', + 'e.g. /data/models (path must start with /). Use commas to separate multiple paths.', 'clusters.addworker.cacheVolume.holder': - 'напр. /data/cache (путь должен начинаться с /)', + 'e.g. /data/cache (path must start with /)', 'clusters.addworker.vendorNotes.title': 'Примечания для устройств {vendor}', 'clusters.button.genToken': 'Нужен новый токен? Нажмите здесь.', diff --git a/src/locales/zh-CN/clusters.ts b/src/locales/zh-CN/clusters.ts index 1498f568..cc9fda88 100644 --- a/src/locales/zh-CN/clusters.ts +++ b/src/locales/zh-CN/clusters.ts @@ -90,7 +90,7 @@ export default { 'clusters.addworker.notSpecified': '未指定', 'clusters.addworker.autoDetect': '自动检测', 'clusters.addworker.extraVolume.holder': - '例如:/data/models(路径需以 / 开头)', + '例如:/data/models(路径需以 / 开头),添加多个请用逗号分隔。', 'clusters.addworker.cacheVolume.holder': '例如:/data/cache(路径需以 / 开头)', 'clusters.addworker.vendorNotes.title': '{vendor}设备注意事项', diff --git a/src/pages/resources/config/gpu-driver.ts b/src/pages/resources/config/gpu-driver.ts index 88219dfa..79de8ebf 100644 --- a/src/pages/resources/config/gpu-driver.ts +++ b/src/pages/resources/config/gpu-driver.ts @@ -175,6 +175,19 @@ const generateEnvArgs = (params: any) => { return envArgs; }; +const generateExtraModelDirArg = (modelDir: string) => { + const pathList = modelDir + ?.split(',') + .map((item) => item.trim()) + .filter((item) => item); + if (pathList && pathList.length > 0) { + return pathList + .map((item) => `--volume ${item}:${item} \\`) + .join('\n '); + } + return ''; +}; + const setNormalArgs = (params: any) => { return `sudo docker run -d --name ${params.containerName || 'gpustack-worker'} \\ -e "GPUSTACK_RUNTIME_DEPLOY_MIRRORED_NAME=${params.containerName || 'gpustack-worker'}" \\ @@ -184,7 +197,7 @@ const setNormalArgs = (params: any) => { --network=host \\ --volume /var/run/docker.sock:/var/run/docker.sock \\ --volume ${params.gpustackDataVolume || 'gpustack-data'}:/var/lib/gpustack \\ - ${params.modelDir ? `--volume ${params.modelDir}:${params.modelDir} \\` : ''} + ${generateExtraModelDirArg(params.modelDir)} ${params.cacheDir ? `--volume ${params.cacheDir}:/var/lib/gpustack/cache \\` : ''}`; };