这是 Docker 工程里很关键的一条分界线。
#1. 开发模式:更重视可改动、可观察
开发时常见做法:
- bind mount 本地代码
- 运行开发服务器
- 热更新
- 更方便
exec进去调试
例子:
services:
web:
image: node:22-alpine
working_dir: /app
volumes:
- ./:/app
command: sh -c "npm install && npm run dev"
ports:
- "5173:5173"#2. 生产模式:更重视不可变、可复制、可发布
生产更推荐:
- 预先 build 出镜像
- 容器里不要依赖本地源码
- 用明确 tag 发布
- 用 volume 管数据
- 配健康检查和日志体系
例子:
services:
web:
image: myorg/web:1.3.0
ports:
- "3000:3000"
environment:
NODE_ENV: production#3. 这两种模式不要混着想
开发
= 工地现场反复调试
生产
= 已经装好柜、封好箱、准备发船