Skip to content
Draft

deploy #7163

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"yaml.format.enable": false,
"[yaml]": {
"editor.formatOnSave": false
},
"mdx.server.enable": true,
"markdown.copyFiles.overwriteBehavior": "nameIncrementally",
"markdown.copyFiles.destination": {
Expand Down
33 changes: 26 additions & 7 deletions deploy/init.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ const syncInstallScriptVersions = async (deployVersions) => {
* `deploy/templates/vector/config.json` 维护向量库输出文件名、服务片段、连接配置
* 和额外 configs。版本模板只通过 `${{vec.*}}` 引用这些共享片段。
*
* @returns {Promise<Record<string, { filename: string, db: string, config: string, extra: string }>>}
* @returns {Promise<Record<string, { filename: string, db: string, config: string, extra: string, extraConfig: string, extraBlock: string, depends: string }>>}
*/
const loadVectorConfigs = async () => {
const vectorRoot = path.join(process.cwd(), 'templates', 'vector');
Expand All @@ -136,6 +136,16 @@ const loadVectorConfigs = async () => {
config: await readOptionalFile(config.configFile),
extra: await readOptionalFile(config.extraFile)
};
// 外部向量库(如 Zilliz)没有本地 fastgpt-vector 服务,不能注入 depends_on。
vectors[name].depends = vectors[name].db.includes(' fastgpt-vector:')
? ' fastgpt-vector:\n condition: service_healthy'
: '';
vectors[name].extraConfig = vectors[name].extra
? vectors[name].extra
.split('\n')
.map((line) => ` ${line}`)
.join('\n')
: '';
vectors[name].extraBlock = vectors[name].extra ? `configs:\n ${vectors[name].extra}` : '';
}

Expand Down Expand Up @@ -175,18 +185,20 @@ const loadArgs = (version) => {
};

/**
* replace all ${{}}
* 替换模板中的占位符。
*
* YAML 块占位符应写成独立注释行(如 `# ${{vec.db}}`),这样模板文件本身
* 仍能按 YAML 解析;普通镜像/tag 变量仍可写在行内。
*
* @param {string} source
* @param {RegionEnum} region
* @param {string | undefined} vec
* @param {Record<Services, ArgItemType>} args
* @param {Record<string, { filename: string, db: string, config: string, extra: string }>} vectors
* @param {Record<string, { filename: string, db: string, config: string, extra: string, extraConfig: string, extraBlock: string, depends: string }>} vectors
* @returns {string}
*/
const replace = (source, region, vec, args, vectors) => {
// Match ${{expr}}, capture "expr" inside {{}}
return source.replace(/\$\{\{([^}]*)\}\}/g, (_, expr) => {
// expr: a.b
const resolveExpr = (expr) => {
/**
* @type {String}
*/
Expand All @@ -208,7 +220,14 @@ const replace = (source, region, vec, args, vectors) => {
} else if (b === 'image') {
return args[a].image[region];
}
});
};

return source
.replace(/^[^\S\r\n]*#\s*\$\{\{([^}]*)\}\}[^\S\r\n]*(?:\r?\n|$)/gm, (_, expr) => {
const value = resolveExpr(expr);
return value ? `${value}\n` : '';
})
.replace(/\$\{\{([^}]*)\}\}/g, (_, expr) => resolveExpr(expr));
};

const formatYamlOutput = (source) => `${source.trimEnd()}\n`;
Expand Down
1 change: 1 addition & 0 deletions deploy/templates/vector/milvus.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
MINIO_ADDRESS: fastgpt-milvus-minio:9000
networks:
- data
- vector
volumes:
- fastgpt-milvus-data:/var/lib/milvus
healthcheck:
Expand Down
11 changes: 6 additions & 5 deletions deploy/version/main/docker-compose.template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ x-no-proxy-config: &x-no-proxy-config

# 向量库相关配置
x-vec-config: &x-vec-config
${{vec.config}}
# ${{vec.config}}

services:
# Vector DB
${{vec.db}}
# ${{vec.db}}
fastgpt-mongo:
image: ${{mongo.image}}:${{mongo.tag}} # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
Expand Down Expand Up @@ -147,8 +147,7 @@ ${{vec.db}}
depends_on:
fastgpt-mongo:
condition: service_healthy
fastgpt-vector:
condition: service_healthy
# ${{vec.depends}}
fastgpt-redis:
condition: service_healthy
fastgpt-minio:
Expand Down Expand Up @@ -348,6 +347,8 @@ ${{vec.db}}
networks:
data:
name: fastgpt_data
vector:
name: fastgpt_vector
app:
name: fastgpt_app
codesandbox:
Expand All @@ -369,4 +370,4 @@ volumes:
fastgpt-seekdb-config:
fastgpt-aiproxy_pg:

${{vec.extraBlock}}
# ${{vec.extraBlock}}
11 changes: 6 additions & 5 deletions deploy/version/v4.14/docker-compose.template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,11 @@ x-no-proxy-config: &x-no-proxy-config

# 向量库相关配置
x-vec-config: &x-vec-config
${{vec.config}}
# ${{vec.config}}

services:
# Vector DB
${{vec.db}}
# ${{vec.db}}
fastgpt-mongo:
image: ${{mongo.image}}:${{mongo.tag}} # cpu 不支持 AVX 时候使用 4.4.29
container_name: fastgpt-mongo
Expand Down Expand Up @@ -150,8 +150,7 @@ ${{vec.db}}
depends_on:
fastgpt-mongo:
condition: service_healthy
fastgpt-vector:
condition: service_healthy
# ${{vec.depends}}
fastgpt-redis:
condition: service_healthy
fastgpt-minio:
Expand Down Expand Up @@ -425,6 +424,8 @@ ${{vec.db}}
networks:
data:
name: fastgpt_data
vector:
name: fastgpt_vector
app:
name: fastgpt_app
codesandbox:
Expand Down Expand Up @@ -473,4 +474,4 @@ configs:

[ingress]
mode = "direct"
${{vec.extra}}
# ${{vec.extraConfig}}
74 changes: 74 additions & 0 deletions deploy/version/v4.15/args.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{
"tags": {
"fastgpt": "v4.15.0",
"fastgpt-code-sandbox": "v4.15.0",
"fastgpt-mcp_server": "v4.15.0",
"fastgpt-plugin": "v1.0.0-beta2",
"volume-manager": "v0.2.0",
"agent-sandbox-image": "v0.2.0",
"agent-sandbox-proxy": "v0.2.0-beta2",
"aiproxy": "v0.6.1",

"opensandbox-server": "v0.1.9",
"opensandbox-execd": "v1.0.7",
"opensandbox-egress": "v1.0.3",
"aiproxy-pg": "0.8.0-pg15",
"mongo": "5.0.32",
"redis": "7.2-alpine",
"minio": "RELEASE.2025-09-07T16-13-09Z",
"pg": "0.8.0-pg15",
"milvus-minio": "RELEASE.2023-03-20T20-16-18Z",
"milvus-etcd": "v3.5.5",
"milvus-standalone": "v2.4.3",
"oceanbase": "4.3.5-lts",
"seekdb": "1.0.1.0-100000392025122619"
},
"images": {
"cn": {
"fastgpt": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt",
"fastgpt-plugin": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin",
"fastgpt-code-sandbox": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-code-sandbox",
"fastgpt-mcp_server": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server",
"volume-manager": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-volume-manager",
"agent-sandbox-image": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox",
"agent-sandbox-proxy": "registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-agent-sandbox-proxy",
"opensandbox-server": "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-server",
"opensandbox-execd": "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-execd",
"opensandbox-egress": "registry.cn-hangzhou.aliyuncs.com/fastgpt/opensandbox-egress",
"aiproxy": "registry.cn-hangzhou.aliyuncs.com/labring/aiproxy",
"aiproxy-pg": "registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector",
"mongo": "registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo",
"redis": "registry.cn-hangzhou.aliyuncs.com/fastgpt/redis",
"minio": "registry.cn-hangzhou.aliyuncs.com/fastgpt/minio",
"pg": "registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector",
"milvus-minio": "minio/minio",
"milvus-etcd": "quay.io/coreos/etcd",
"milvus-standalone": "milvusdb/milvus",
"oceanbase": "oceanbase/oceanbase-ce",
"seekdb": "oceanbase/seekdb"
},
"global": {
"fastgpt": "ghcr.io/labring/fastgpt",
"fastgpt-plugin": "ghcr.io/labring/fastgpt-plugin",
"fastgpt-code-sandbox": "ghcr.io/labring/fastgpt-code-sandbox",
"fastgpt-mcp_server": "ghcr.io/labring/fastgpt-mcp_server",
"volume-manager": "ghcr.io/labring/fastgpt-agent-volume-manager",
"agent-sandbox-image": "ghcr.io/labring/fastgpt-agent-sandbox",
"agent-sandbox-proxy": "ghcr.io/labring/fastgpt-agent-sandbox-proxy",
"opensandbox-server": "opensandbox/server",
"opensandbox-execd": "opensandbox/execd",
"opensandbox-egress": "opensandbox/egress",
"aiproxy": "ghcr.io/labring/aiproxy",
"aiproxy-pg": "pgvector/pgvector",
"mongo": "mongo",
"redis": "redis",
"minio": "minio/minio",
"pg": "pgvector/pgvector",
"milvus-minio": "minio/minio",
"milvus-etcd": "quay.io/coreos/etcd",
"milvus-standalone": "milvusdb/milvus",
"oceanbase": "oceanbase/oceanbase-ce",
"seekdb": "oceanbase/seekdb"
}
}
}
Loading
Loading