参加「Ship It Saturdays」:使用 Firebase Hosting 和 Cloud Run 实现高效路径路由
開催イベント 事例紹介 阅读时间 5 分钟

参加「Ship It Saturdays」:使用 Firebase Hosting 和 Cloud Run 实现高效路径路由

参加了“Ship It Saturdays”活动,解决了积压的技术任务。本次重点在于实现 Google Cloud Run 项目部署,通过 Firebase Hosting 将特定路径重定向至 Cloud Run 服务。通过与 GCP 负载均衡器的对比,确定了 Firebase Hosting 在成本和运维方面的优势。文中详细介绍了 SvelteKit 基础路径配置及 firebase.json 重写规则的具体实施步骤。

参与“Ship It Saturdays”活动:专注力与技术决策的实战复盘

今天,我受 Lloyd 之邀,参加了一场名为“Ship It Saturdays”的活动。这是一场为期 4 小时的“冲刺”专场,旨在为参与者提供一个专注的空间,解决那些平时一直想做却因拖延而搁置的任务。

1. 活动体验与收获

“Ship It Saturdays”不仅是一个专注工作的空间,更是一个打破职场思维限制的社区。在这里,人们可以探索自己的“副业”或疯狂的点子。活动当天的流程紧凑且高效:从上午 10:00 开门到 15:00 结束,期间不仅有明确的“建造/冲刺”时间,还能在结束前参与“展示与问答(Show-and-tell)”。

实际体验后,我感触颇深:通过集中的时间段,我成功突破了平日在家容易拖延的事务。同时,通过与其他参与者的讨论,我接触到了许多新颖的观点,极大地拓展了知识面。对于我个人而言,在全英文环境中交流也是一次非常宝贵的锻炼机会。

2. 技术课题:Google Cloud Run 的路径配置

在本次活动中,我主要研究了基于 Google Cloud Run 的项目部署问题。我的核心需求是利用同一个域名 doc.mydomaintest.jp,实现不同路径的分流:根路径 doc.mydomaintest.jp 指向一个网站,而 doc.mydomaintest.jp/domaintest 指向另一个 Cloud Run 服务。

在评估了未来长期开发的策略后,我针对 Firebase Hosting(内嵌 Cloud Run) 与 GCP 负载均衡器(Load Balancer + 多 Cloud Run) 两种方案进行了详细对比。

方案评估维度:

架构复杂度:
  • Firebase Hosting:极低。仅需少量 JSON 配置,无需服务器运维压力。
  • GCP 负载均衡器:高。需要管理静态 IP、SSL 证书、VPC 代理子网和路由规则。
金钱成本:
  • Firebase Hosting:极低,甚至免费。其额度充足,且重写规则本身不额外收费。
  • GCP 负载均衡器:较高。无论流量大小,负载均衡器均会产生固定的实例小时费(通常每月约 20-30 美元起)。
静态资源性能:
  • Firebase Hosting:极快。自带全球顶级 CDN,静态资源直接缓存于边缘节点。
  • GCP 负载均衡器:取决于配置。若未配置 Cloud CDN,流量需穿透至 Cloud Run,性能受限。
灵活性与扩展性:
  • Firebase Hosting:中等。非常适合主站为静态或前端框架、子站为轻量微服务的场景。
  • GCP 负载均衡器:极高。支持蓝绿发布、跨区域容灾、Cloud Armor 防火墙等企业级功能。

决策结论:

对于以 SvelteKit、Next.js、Vue 或 React 为核心的现代全栈项目,“Firebase Hosting 为主 + 局部微服务内嵌 Cloud Run”是开发体验与成本控制的最佳平衡方案。

3. 技术实现方案

确定方案后,我顺利完成了部署。核心操作步骤如下:

第一步:修改 SvelteKit 的 base 路径

在项目 svelte.config.js 文件中配置 paths,确保其运行在子路径下:

import adapter from '@sveltejs/adapter-node'; 

/** @type {import('@sveltejs/kit').Config} */
const config = {
    kit: {
        adapter: adapter(),
        paths: {
            // Edit this↓↓↓
            base: '/domaintest' 
        }
    }
};

export default config;

第二步:配置 firebase.json

在 rewrites 数组中添加规则,将不带斜杠和带斜杠的路径统一导向 Cloud Run 服务:

"rewrites": [
  {
    "source": "/domaintest",
    "run": {
      "serviceId": "Your Cloud Run Service Name",
      "region": "asia-northeast1"
    }
  },
  {
    "source": "/domaintest/**",
    "run": {
      "serviceId": "Your Cloud Run Service Name",
      "region": "asia-northeast1"
    }
  }
]

配置完成后,运行 firebase deploy --only hosting 即可成功部署。

4. 未来展望

此次技术难题的圆满解决让我倍感欣慰。接下来,我有着更为宏大的技术目标:计划利用 AI 模型(如 Gemini 3.5 Live 或 GPT Realtime 2)开发一款类似《名侦探柯南》中“变声器”功能的同声传译设备,通过“3D 打印 + IoT + App”的组合实现。

虽然英语能力的提升并非一蹴而就,但我会持之以恒,争取在未来能与大家进行更流畅的交流,并更好地融入这个充满活力的社区。

VIBECODING

把 AI 与开发现场的知识,整理成易读的文章传递给你。

© 2026 VibeCoding Japan, Inc. All Rights Reserved.