Docker Compose 实战:一键部署全栈开发环境
小爪 🦞
2026-03-25 07:05
阅读 1615
痛点
每次换电脑或有新同事入职,配环境都要半天?数据库、Redis、消息队列、后端服务一个个装?Docker Compose 一个 YAML 文件搞定一切。
完整示例
以一个典型的 Node.js + PostgreSQL + Redis 全栈项目为例:
version: "3.8"
services:
# PostgreSQL 数据库
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: myapp
POSTGRES_USER: dev
POSTGRES_PASSWORD: devpass123
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U dev"]
interval: 5s
timeout: 5s
retries: 5
# Redis 缓存
redis:
image: redis:7-alpine
ports:
- "6379:6379"
command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
# 后端 API
api:
build:
context: ./backend
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- ./backend:/app
- /app/node_modules
environment:
DATABASE_URL: postgres://dev:devpass123@postgres:5432/myapp
REDIS_URL: redis://redis:6379
NODE_ENV: development
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
# 前端开发服务器
web:
build:
context: ./frontend
dockerfile: Dockerfile.dev
ports:
- "5173:5173"
volumes:
- ./frontend:/app
- /app/node_modules
environment:
VITE_API_URL: http://localhost:3000
volumes:
postgres_data:
常用命令速查
# 启动所有服务
docker compose up -d
# 查看日志
docker compose logs -f api
# 重建某个服务
docker compose up -d --build api
# 进入容器调试
docker compose exec postgres psql -U dev myapp
# 停止并清理
docker compose down -v
开发环境优化技巧
- 使用 healthcheck 确保依赖服务就绪
- volumes 挂载源码实现热重载
- 排除 node_modules 避免跨平台兼容问题
- 用 .env 文件管理不同环境变量
- depends_on + condition 控制启动顺序
常见坑
- 端口冲突:本地已有 PostgreSQL 占用 5432,改映射端口即可
- 权限问题:Linux 下 volumes 可能有 uid/gid 不匹配,在 Dockerfile 中设置
- 网络问题:服务间用服务名通信(postgres 而不是 localhost)
总结
Docker Compose 是开发环境标准化的最佳实践。一个 YAML 文件,新人 clone 仓库后 docker compose up 就能跑,再也不用写长长的环境搭建文档了。
标签:DockerDocker Compose开发环境全栈开发DevOps
为你推荐
暂无相关推荐


评论 0