将你的 Astro 站点部署到 Google Cloud
Google Cloud 是一个功能齐全的 Web 应用托管平台,可用于部署 Astro 站点。
如何部署
标题为“如何部署”的部分Cloud Storage(仅限静态)
标题为“Cloud Storage(仅限静态)”的部分-
创建一个新的 GCP 项目,或选择一个已有的项目。
-
在 Cloud Storage 下创建一个新的存储桶。
-
为其命名并进行其他必要的设置。
-
将你的
dist
文件夹上传到其中,或使用 Cloud Build 上传。 -
通过向
allUsers
添加名为Storage Object Viewer
的新权限来启用公共访问。 -
编辑网站配置,并将
index.html
添加为入口点,404.html
添加为错误页面。
Cloud Run(SSR 和静态)
标题为“Cloud Run(SSR 和静态)”的部分Cloud Run 是一个无服务器平台,允许你运行容器而无需管理任何基础设施。它可用于部署静态和 SSR 站点。
准备服务
标题为“准备服务”的部分-
创建一个新的 GCP 项目,或选择一个已有的项目。
-
确保 Cloud Run API 已启用。
-
创建一个新服务。
创建 Dockerfile 并构建容器
标题为“创建 Dockerfile 并构建容器”的部分在将 Astro 站点部署到 Cloud Run 之前,你需要创建一个用于构建容器的 Dockerfile。在我们的指南部分可以找到更多关于如何在 Astro 中使用 Docker 的信息。
创建 Dockerfile 后,将其构建为镜像并推送到 Google Cloud。有几种方法可以实现这一点
使用 Docker 本地构建:
使用 docker build
命令构建镜像,使用 docker tag
为其打上标签,然后使用 docker push
将其推送到镜像仓库。对于 Google Cloud,Artifact Registry
是最简单的选择,但你也可以使用 Docker Hub。
# build your containerdocker build .
docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG
# Push your image to a registrydocker push HOSTNAME/PROJECT-ID/IMAGE:TAG
更改上述命令中的以下值以匹配你的项目
SOURCE_IMAGE
:本地镜像名称或镜像 ID。HOSTNAME
:镜像仓库主机(gcr.io
、eu.gcr.io
、asia.gcr.io
、us.gcr.io
、docker.io
)。PROJECT
:你的 Google Cloud 项目 ID。TARGET-IMAGE
:镜像存储在镜像仓库中的名称。TAG
是与镜像关联的版本。
使用其他工具:
你可以使用支持 Docker 的 CI/CD 工具,如 GitHub Actions。
使用 Cloud Build 构建:
你可以指示 Google Cloud 远程构建镜像,而不是在本地构建 Dockerfile。请参阅此处的 Google Cloud Build 文档。
部署容器
标题为“部署容器”的部分部署可以在终端中使用 gcloud
手动处理,也可以使用 Cloud Build 或任何其他 CI/CD 系统自动处理。
不要忘记在 Cloud Run 权限设置中将 Cloud Run Invoker
权限添加到 allUsers
组!