用 Docker 来构建你的 Astro 网站
Docker 是一个使用容器构建、部署和运行应用程序的工具。
Docker 镜像和容器可以部署到许多不同的平台,例如 AWS、Azure 和 Google Cloud。本节示例不聚焦于如何将网站部署到特定平台,而是会展示如何将你的项目与 Docker 整合。
前期准备
标题部分 前期准备- 在你的本地机器上安装 Docker。你可以在此处找到适用于你的操作系统的安装指南。
- 在你的项目中创建一个 Dockerfile。你可以在此处了解有关 Dockerfile 的更多信息,并使用下面的示例作为开始来编写 Dockerfile。
创建 Dockerfile
标题部分 创建 Dockerfile在项目根目录中创建一个名为 Dockerfile
的文件,这个文件包含了构建你的网站的指令,具体指令会根据你的需求而有所不同。本指南无法展示所有可能的选项,但会为 SSR 和静态渲染模式提供一些起始的步骤。
如果你使用的是除了 npm 之外的包管理工具,可能需要你相应地调整命令。
服务端渲染模式(SSR)
标题部分 服务端渲染模式(SSR)以下是一个 Dockerfile 示例,它将使用 Node.js 构建你的网站,并在端口 3000
上进行服务。这要求在 Astro 项目中安装了 Node 适配器。
添加 .dockerignore
标题部分 添加 .dockerignore将 .dockerignore
文件添加到你的项目中是一个最佳实践。这个文件非常类似于 .gitignore
,用于描述在 Docker 的 COPY
或 ADD
命令中应该忽略哪些文件或文件夹,从而加快构建过程并减小最终镜像的大小。
这个文件应该放在与 Dockerfile
相同的目录下。可阅读 .dockerignore
文档获取更多信息。
静态渲染模式
标题部分 静态渲染模式Apache (httpd)
标题部分 Apache (httpd)以下是一个 Dockerfile 示例,它将构建你的网站,并使用 Apache httpd 默认配置的 80
端口提供服务。
NGINX
标题部分 NGINX为了构建上面的 Dockerfile,你还需要为 NGINX 创建一个配置文件。在项目的根目录下创建一个名为 nginx
的文件夹,并在其中创建一个名为 nginx.conf
的文件。
多层构建(使用 SSR)
标题部分 多层构建(使用 SSR)下面是一个更高级的 Dockerfile 示例,通过 Docker 的 多层构建 功能,仅在源代码变化时重新安装 npm 依赖项,从而优化了站点的构建过程。这根据依赖项的大小从而节省几分钟甚至更多的构建时间。
操作步骤
标题部分 操作步骤- 在项目的根目录中运行以下命令来构建容器。可将
<your-astro-image-name>
替换为任意名称:
这将生成一个镜像,你可以在本地运行它或部署到你偏好的平台上。
- 要将镜像作为本地容器运行,请使用以下命令。
将 <local-port>
替换为你本地机器上的空闲端口。将 <container-port>
替换为你的 Docker 容器暴露的端口号(如上面示例中的 3000
、80
或 8080
)。
接着你应该能够通过 http://localhost:<local-port>
访问你的网站。
- 现在,你的网站已经成功构建并打包在一个容器中,你可以将其部署到云服务提供商。例如,查看 Google Cloud 部署指南和 Docker 文档中的 部署你的应用 页面。
更多方案
-
状态共享
学习如何使用 Nano Stores 在框架组件之间共享状态
-
添加 RSS 摘要
通过向你的 Astro 网站添加 RSS 摘要让用户来订阅你的内容。
-
Installing a Vite or Rollup plugin
Learn how you can import YAML data by adding a Rollup plugin to your project.
-
使用 API 路由构建表单
了解如何使用 JavaScript 发送表单到 API 路由
-
在 Astro 页面中构建 HTML 表单
了解如何在 Astro 页面中构建 HTML 表单并在你的 frontmatter 中处理提交请求
-
使用 Bun 和 Astro
学习如何在 Astro 网站上使用 Bun。
-
调用服务器端点
了解如何在 Astro 中调用服务器端点
-
校验验证码
了解如何创建一个 API 路由并从客户端进行获取。
-
用 Docker 来构建你的 Astro 网站
了解如何使用 Docker 来构建你的 Astro 网站。
-
为链接添加图标
了解如何安装 rehype 插件并为你 Markdown 文件中的链接添加图标
-
添加 i18n 功能
通过动态路由和内容集合来让你的 Astro 站点支持国际化。
-
Add Last Modified Time
Build a remark plugin to add the last modified time to your Markdown and MDX.
-
添加阅读时间
构建一个 remark 插件并将其添加到你的 Markdown 或 MDX 文件中。
-
在 Astro 组件中共享状态
了解如何通过 Nano Stores 在 Astro 组件中共享状态