欢迎光临
我们一直在努力

Docker Compose 部署 Node.js + MySQL + Redis 完整实战(2026)

前言

在真实项目中,很少只有一个服务。

一个典型 Web 项目通常包含:

  • Node.js 应用
  • MySQL 数据库
  • Redis 缓存
  • Nginx 网关

如果每个服务都手动安装,不仅维护复杂,而且环境迁移困难。

Docker Compose 的价值就在于:

用一个配置文件管理整个系统。

本文以 Node.js + MySQL + Redis 为例,介绍完整部署方案。


为什么推荐 Docker Compose

很多新手部署项目:

安装 Node
安装 MySQL
安装 Redis
修改配置
启动服务

时间久了容易出现:

  • 环境不一致
  • 依赖冲突
  • 升级困难

Docker Compose 可以做到:

git clone

docker compose up -d

整个环境立即启动。


推荐目录结构

project

├── docker-compose.yml
├── .env
├── app
│     ├── package.json
│     ├── src
│     └── Dockerfile
└── mysql

建议:

应用代码独立。

数据库数据使用 volume 保存。

不要把数据放容器内部。


Node.js Dockerfile

推荐:

基础镜像

使用:

node:20-alpine

而不是:

latest

避免未来版本变化带来问题。


docker-compose.yml

一个典型结构:

services:

  app:

  mysql:

  redis:

三者通过默认网络通信。

应用连接:

mysql:3306

redis:6379

不需要使用 localhost。

这是很多新手最容易犯的错误。


环境变量管理

不要把配置写死。

推荐:

.env

保存:

MYSQL_HOST=mysql

MYSQL_USER=root

REDIS_HOST=redis

不同环境只需要替换 env 文件即可。


数据持久化

数据库一定要挂载 volume。

否则:

docker compose down

之后数据可能丢失。

推荐:

volumes:
  mysql_data:

生产环境不要省略。


容器启动顺序

很多人认为:

Compose 会保证:

mysql

↓

node

实际上:

容器启动成功 ≠ 服务可用。

Node 很可能在 MySQL 初始化完成前启动。

推荐:

应用启动时增加重试机制。

而不是依赖:

depends_on

日志管理

不要只依赖:

docker logs

建议:

应用内部接入:

  • Winston
  • Pino

统一输出日志。

未来接入:

ELK

Prometheus

Grafana

都会更加方便。


生产环境建议

不要:

所有服务放一台机器

推荐:

应用

数据库

缓存

分离部署。

数据库单独备份。

Redis 单独管理。

这样扩展能力更强。


Compose 适合哪些项目?

非常适合:

  • Node.js
  • Python
  • WordPress
  • AI 项目
  • 中小型 SaaS

大型项目未来可以平滑迁移到:

Kubernetes。


总结

Docker Compose 最大价值不是部署。

而是:

标准化环境。

让开发、测试、生产保持一致。

对于独立开发者来说,这是成本最低、效率最高的方案之一。

赞(0)
未经允许不得转载:X记录空间 » Docker Compose 部署 Node.js + MySQL + Redis 完整实战(2026)