本文档介绍了用于部署和管理 Gumroad 应用程序的容器化和编排基础设施。它概述了基于 Docker 的容器化策略以及为部署管道提供支持的 HashiCorp Nomad 编排系统。
有关各个环境的详细配置,请参阅配置管理。有关利用此基础设施的完整 CI/CD 管道,请参阅CI/CD 管道。
Gumroad 基础设施采用容器化部署模型,使用 Docker 进行应用程序打包,使用 HashiCorp Nomad 进行容器编排。此设置可实现跨多个环境的一致部署,同时提供可扩展性和资源管理功能。
下图展示了核心基础设施组件及其关系
来源:.buildkite/scripts/install_nomad.sh1-24
容器化过程采用多阶段方法,为特定目的构建不同类型的镜像
Docker 配置使用全面的忽略模式,以从容器构建中排除开发工件和临时文件。主要排除项包括
| 目录/模式 | 目的 |
|---|---|
.bundle, vendor/cache/, vendor/bundle/ | Ruby gem 依赖项 |
tmp/, log/ | 运行时临时文件和日志文件 |
ci_scripts/, .githooks/ | 开发工具 |
docker/tmp/ | Docker 构建工件 |
.env* 文件 | 环境特定配置 |
容器化策略支持多种镜像类型,适用于不同的部署场景,从而可以根据特定的运行时要求优化容器。
HashiCorp Nomad 作为容器编排平台,管理着基础设施中的容器部署、扩展和资源分配。
Nomad 安装通过install_nomad.sh 脚本自动完成,该脚本
/usr/local/bin/nomad来源:.buildkite/scripts/install_nomad.sh10-23
Nomad 编排层提供
基础设施组件与更广泛的 CI/CD 管道无缝集成。编排系统从构建过程中接收容器镜像,并根据环境特定的配置管理它们的部署。
有关 Docker 容器配置的详细信息,请参阅Docker 配置。有关 Nomad 作业定义和集群管理,请参阅Nomad 编排。