2024-11-22 使用sealos的S3存储加速静态网站

Sealos Cloud 支持S3存储桶部署成静态网站,相当于netlify.app的功能了。

image.png

三步走

1. 在sealos上创建存储桶,支持读写,并开启托管

image.png

image.png

2. 修改github仓库的部署脚本,增加minio deploy action

注意要加在action-gh-pages前面,action-gh-pages在执行完毕的时候会删除构建产物
配置的时候注意桶的名称是完整的名称,MINIO_ENDPOINT记得加上https对应关系是这样的

image.png

密文在这里配置


image.png
image.png

3. 自定义域名,修改解析规则

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';

// 创建一个 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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容