Sealos Cloud 支持S3存儲桶部署成靜態(tài)網(wǎng)站,相當于netlify.app
的功能了。
image.png
三步走
1. 在sealos上創(chuàng)建存儲桶,支持讀寫灭返,并開啟托管
image.png
image.png
2. 修改github倉庫的部署腳本,增加minio deploy action
注意要加在action-gh-pages前面甜熔,action-gh-pages在執(zhí)行完畢的時候會刪除構建產(chǎn)物
配置的時候注意桶的名稱是完整的名稱,MINIO_ENDPOINT
記得加上https
對應關系是這樣的
image.png
密文在這里配置
image.png
image.png
3. 自定義域名,修改解析規(guī)則
image.png
這里我就做到 訪問 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';
// 創(chuàng)建一個 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'; // 桶名稱
// 遞歸函數(shù)來上傳目錄中的所有文件
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);