使用Pulumi Azure部署NGINX容器到Azure容器实例(ACI)
2025-06-06 20:54:03作者:廉彬冶Miranda
前言
在现代云原生应用开发中,容器化技术已成为不可或缺的一部分。Azure容器实例(ACI)提供了一种简单快速的方式来运行容器,而无需管理底层基础设施。本文将介绍如何使用Pulumi Azure工具包,通过基础设施即代码(IaC)的方式,在ACI中部署一个NGINX web服务器容器。
准备工作
在开始之前,请确保完成以下准备工作:
- 安装Pulumi CLI工具
- 配置Azure认证凭据
- 确保已安装Node.js环境
项目初始化
首先创建一个新项目目录并初始化Pulumi项目:
mkdir webserver && cd webserver
pulumi new azure-javascript
这将创建一个基于JavaScript的Pulumi Azure项目模板。
编写基础设施代码
打开自动生成的index.js文件,替换为以下内容:
const pulumi = require("@pulumi/pulumi");
const azure = require("@pulumi/azure");
// 创建资源组
let resourceGroup = new azure.core.ResourceGroup("webserver", {
location: "West US 2",
});
// 创建容器实例组
let container = new azure.containerservice.Group("nginx", {
containers: [{
name: "nginx",
image: "nginx", // 使用官方NGINX镜像
memory: 1, // 分配1GB内存
cpu: 1, // 分配1个vCPU
ports: [{
port: 80, // 暴露80端口
protocol: "TCP"
}],
}],
osType: "Linux", // 指定操作系统类型
resourceGroupName: resourceGroup.name,
location: resourceGroup.location,
});
// 导出公共IP地址
exports.publicIP = container.ipAddress;
这段代码主要完成以下工作:
- 创建一个Azure资源组,作为容器实例的容器
- 定义一个容器实例组,运行NGINX镜像
- 配置容器资源规格(CPU、内存)
- 暴露80端口用于HTTP访问
- 导出容器实例的公共IP地址
部署基础设施
执行以下命令预览并部署基础设施:
pulumi up
命令执行后会显示将要创建的资源预览,确认无误后选择"yes"开始部署。部署完成后,你将看到类似如下的输出:
Outputs:
publicIP: "13.66.202.166"
这表示NGINX容器已成功部署,并获得了公共IP地址。
验证部署
可以通过以下命令验证NGINX服务是否正常运行:
curl $(pulumi stack output publicIP)
如果看到NGINX的欢迎页面HTML内容,说明部署成功。
配置参数详解
在容器实例配置中,有几个关键参数值得注意:
image: 指定要运行的容器镜像,这里使用官方NGINX镜像memory和cpu: 定义容器资源配额ports: 配置容器暴露的端口osType: 必须与容器镜像的操作系统类型匹配
资源清理
完成测试后,可以通过以下命令清理资源:
pulumi destroy
这将删除所有已创建的资源。如果要完全删除项目栈,可以运行:
pulumi stack rm
进阶建议
- 自定义镜像: 可以构建自己的Docker镜像并推送到Azure容器注册表,然后在此处引用
- 环境变量: 通过
environmentVariables参数向容器传递配置 - 持久化存储: 添加
volumes配置实现数据持久化 - 多容器组: 在同一个组中部署多个关联容器
总结
通过本文,我们学习了如何使用Pulumi Azure在Azure容器实例中部署NGINX web服务器。Pulumi提供了一种声明式的方式来定义和部署云基础设施,使基础设施管理更加高效可靠。这种方法的优势在于:
- 使用熟悉的编程语言定义基础设施
- 支持版本控制和代码复用
- 提供预览和变更管理功能
- 简化多云环境管理
对于需要快速部署简单容器化应用且不想管理Kubernetes等复杂编排系统的场景,Azure容器实例配合Pulumi是一个理想的解决方案。
登录后查看全文
热门项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0153- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0112
热门内容推荐
最新内容推荐
项目优选
收起
暂无描述
Dockerfile
733
4.75 K
Ascend Extension for PyTorch
Python
649
795
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
434
395
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.01 K
1.01 K
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
1.24 K
153
deepin linux kernel
C
30
16
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
146
237
暂无简介
Dart
985
252
昇腾LLM分布式训练框架
Python
166
198
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.68 K
989