使用 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

操作步骤

  1. 克隆仓库

    git clone https://github.com/dr-musa-bala/project-2-multicontainer.git
    cd project-2-multicontainer
  2. 构建并启动容器

    docker compose up --build
  3. 打开浏览器

    访问 http://localhost:8080

    Application screenshot

安全性与生产环境注意事项

  • 应用容器 向宿主机暴露任何端口。
  • 所有外部流量均由 Nginx 处理。
  • 符合真实生产部署模式。

为什么这很重要(DevOps 视角)

  • 隔离应用服务。
  • 通过反向代理控制入口流量。
  • 使用声明式配置实现可复现性。
  • 构建易于扩展到 CI/CD 流水线的系统。

后续改进计划

  • 使用 GitHub Actions 添加 CI/CD。
  • 将应用镜像推送至 Docker Hub。
  • 将整个栈部署到 AWS EC2。
  • 实现零停机时间更新。
  • 使用 Let’s Encrypt 添加 HTTPS。
Back to Blog

相关文章

阅读更多 »