使用 Nginx 反向代理和 Docker Compose 的多容器 Web 应用
发布: (2025年12月21日 GMT+8 02:26)
2 min read
原文: Dev.to
Source: Dev.to
本项目演示的内容
- 多容器应用设计
- 使用 Docker Compose 进行服务编排
- Nginx 作为反向代理
- 私有应用容器(不对外网暴露)
- 通过 Docker 网络实现服务间通信
- 应用层与 Web 服务器的清晰分离
- 适用于生产环境的容器结构
架构概览
- 客户端(浏览器) → Nginx(唯一对宿主机暴露的容器)
- Node.js 应用仅在 Docker 网络内部可达
- 容器之间使用 服务名称 进行通信,而非 IP 地址
项目结构
project-2-multicontainer/
使用的技术
- Docker
- Docker Compose(v2)
- Node.js(Express)
- Nginx
- 基于 Linux 的容器
本地运行项目的步骤
前置条件
- Docker Desktop
- Docker Compose v2
操作步骤
-
克隆仓库
git clone https://github.com/dr-musa-bala/project-2-multicontainer.git cd project-2-multicontainer -
构建并启动容器
docker compose up --build -
打开浏览器
访问
http://localhost:8080
安全性与生产环境注意事项
- 应用容器 不 向宿主机暴露任何端口。
- 所有外部流量均由 Nginx 处理。
- 符合真实生产部署模式。
为什么这很重要(DevOps 视角)
- 隔离应用服务。
- 通过反向代理控制入口流量。
- 使用声明式配置实现可复现性。
- 构建易于扩展到 CI/CD 流水线的系统。
后续改进计划
- 使用 GitHub Actions 添加 CI/CD。
- 将应用镜像推送至 Docker Hub。
- 将整个栈部署到 AWS EC2。
- 实现零停机时间更新。
- 使用 Let’s Encrypt 添加 HTTPS。