开发终端兼容云端环境;minio客户端直传兼容云端环境;开发容器增加vim和claude code插件

This commit is contained in:
2025-12-10 13:35:41 +08:00
parent 5024477b74
commit fab2b34a03
6 changed files with 46 additions and 13 deletions

View File

@@ -126,8 +126,7 @@ export function DevTools() {
variant="outline"
size="sm"
onClick={() => {
const port = process.env.NEXT_PUBLIC_DEV_TERMINAL_DEFAULT_PORT || '7681'
window.open(`http://localhost:${port}`, '_blank')
window.open(process.env.NEXT_PUBLIC_DEV_TERMINAL_URL || `http://localhost:${process.env.NEXT_PUBLIC_DEV_TERMINAL_DEFAULT_PORT || '7681'}`, '_blank')
}}
disabled={!terminalLoaded}
className="gap-1.5"

View File

@@ -12,6 +12,33 @@ export const minioClient = new Client({
export const BUCKET_NAME = process.env.MINIO_BUCKET || 'app-files';
/**
* 获取客户端访问的基础 URL
* 优先使用 MINIO_SERVER_URL公网地址否则使用内部地址
*/
function getClientBaseUrl(): string {
if (process.env.MINIO_SERVER_URL) {
return process.env.MINIO_SERVER_URL;
}
const protocol = process.env.MINIO_USE_SSL === 'true' ? 'https' : 'http';
const endpoint = process.env.MINIO_ENDPOINT || 'localhost';
const port = process.env.MINIO_API_PORT || '9000';
return `${protocol}://${endpoint}:${port}`;
}
/**
* 替换预签名 URL 中的内部地址为客户端可访问的地址
*/
function replaceUrlBase(originalUrl: string): string {
const clientBase = getClientBaseUrl();
const url = new URL(originalUrl);
const clientUrl = new URL(clientBase);
url.protocol = clientUrl.protocol;
url.hostname = clientUrl.hostname;
url.port = clientUrl.port; // 空字符串表示使用协议默认端口
return url.toString();
}
// 桶初始化标志
let bucketInitialized = false;
@@ -150,7 +177,7 @@ export async function generatePresignedPostPolicy(
const presignedData = await minioClient.presignedPostPolicy(policy);
return {
postURL: presignedData.postURL,
postURL: replaceUrlBase(presignedData.postURL),
formData: presignedData.formData,
objectName,
};
@@ -237,7 +264,7 @@ export async function generatePresignedGetObject(
);
return {
url,
url: replaceUrlBase(url),
expiresIn: expirySeconds,
};
} catch (error) {
@@ -343,9 +370,5 @@ export async function getObjectMetadata(objectName: string) {
* @returns 公开访问 URL
*/
export function getPublicUrl(objectName: string): string {
const protocol = process.env.MINIO_USE_SSL === 'true' ? 'https' : 'http';
const endpoint = process.env.MINIO_ENDPOINT || 'localhost';
const port = process.env.MINIO_API_PORT || '9000';
return `${protocol}://${endpoint}:${port}/${BUCKET_NAME}/${objectName}`;
return `${getClientBaseUrl()}/${BUCKET_NAME}/${objectName}`;
}

View File

@@ -46,7 +46,8 @@ export function startTerminalService() {
'-p', port,
'-t', 'titleFixed=开发终端',
'-t', 'fontSize=14',
'-i', '127.0.0.1',
'-c', `super_admin:${process.env.SUPER_ADMIN_PASSWORD}`,
'-i', process.env.SUPER_ADMIN_PASSWORD ? '0.0.0.0' : "127.0.0.1",
'--writable',
'tmux', 'new', '-A',
'-s', process.env.DEV_TERMINAL || 'nextdev',