Vocs
GCP.Website.Vocs deploys a Vocs documentation
site to Cloud Run. Static pages are served first, and everything else
is rendered by the server.
Install
Section titled “Install”The build integration ships separately. It only runs at deploy time, so a dev dependency is enough:
pnpm add -D https://pkg.alchemy.run/@alchemy.run/frontend-frameworks/a870ed4bun add -d https://pkg.alchemy.run/@alchemy.run/frontend-frameworks/a870ed4npm install -D https://pkg.alchemy.run/@alchemy.run/frontend-frameworks/a870ed4yarn add -D https://pkg.alchemy.run/@alchemy.run/frontend-frameworks/a870ed4Docker has to be running when you deploy. The image is built on your machine.
Deploy the site
Section titled “Deploy the site”import * as Alchemy from "alchemy";import * as GCP from "@alchemy.run/gcp";import * as Effect from "effect/Effect";
export const Docs = GCP.Website.Vocs("Docs");
export default Alchemy.Stack( "MySite", { providers: GCP.providers(), state: GCP.state() }, Effect.gen(function* () { const site = yield* Docs; return { url: site.url }; }),);Run alchemy deploy. site.url is the Cloud Run service URL.
Custom output directory
Section titled “Custom output directory”If vocs.config.* changes outDir, pass the same value:
export const Docs = GCP.Website.Vocs("Docs", { rootDir: "./docs", outDir: "build",});Tune Cloud Run
Section titled “Tune Cloud Run”export const Docs = GCP.Website.Vocs("Docs", { scaling: { minInstanceCount: 1 }, resources: { limits: { cpu: "1", memory: "1Gi" } },});One warm instance means no cold start for the first visitor. See Websites for the other settings.
Local development
Section titled “Local development”alchemy dev runs the framework’s dev server with hot reload and
creates nothing in the cloud. Wrap the site in Alchemy.remote() to
deploy it for real during dev.
Where next
Section titled “Where next”- Websites — the settings every site shares.
- Website reference — every prop.