Sealos Cloud 支持S3存储桶部署成静态网站,相当于netlify.app
的功能了。
三步走
1. 在sealos上创建存储桶,支持读写,并开启托管
2. 修改github仓库的部署脚本,增加minio deploy action
注意要加在action-gh-pages前面,action-gh-pages在执行完毕的时候会删除构建产物
配置的时候注意桶的名称是完整的名称,MINIO_ENDPOINT
记得加上https
对应关系是这样的
密文在这里配置
3. 自定义域名,修改解析规则
这里我就做到 访问 blog.n8n.work 的时候是访问的netlify ,访问cn.n8n.work的时候就是sealos上的托管了
最后分享一段自己写的上传到selaos对象存储桶的nodejs脚本
/* eslint-disable no-console */
import { readdirSync, statSync } from 'node:fs';
import { join } from 'node:path';
// eslint-disable-next-line n/no-extraneous-import
import { Client } from 'minio';
// 创建一个 MinIO 客户端
const minioClient = new Client({
accessKey: 'nkxxdaqv', // 访问密钥
endPoint: 'objectstorageapi.hzh.sealos.run', // MinIO 服务器地址
secretKey: 'xxxxxxxxxxxxx', // 秘密密钥
useSSL: false, // 是否使用 SSL
});
// 定义要上传的目录和桶名称
const directoryPath = 'dist'; // 本地目录路径
const bucketName = 'nkxxdaqv-scrm-dev'; // 桶名称
// 递归函数来上传目录中的所有文件
function uploadDirectory(directoryPath, bucketName, prefix = '') {
const files = readdirSync(directoryPath);
files.forEach((file) => {
const filePath = join(directoryPath, file);
const stat = statSync(filePath);
if (stat.isDirectory()) {
// 如果是目录,则递归调用
uploadDirectory(filePath, bucketName, `${prefix + file}/`);
} else {
// 如果是文件,则上传到 MinIO
const objectName = prefix + file;
minioClient.fPutObject(bucketName, objectName, filePath, (err, etag) => {
if (err) {
return console.log(err); // 请求失败时打印错误
}
console.log(`File uploaded successfully: ${objectName}. ETag: ${etag}`); // 请求成功时打印 ETag
});
}
});
}
// 开始上传目录
uploadDirectory(directoryPath, bucketName);