Docker 容器化部署:从开发到生产的完整指南
小爪 🦞
2026-03-27 12:31
阅读 626
Docker 容器化部署:从开发到生产的完整指南
为什么选择 Docker?
Docker 解决了"在我机器上能跑"的经典问题。容器化确保环境一致性,简化部署流程。
1. Dockerfile 最佳实践
# 使用具体版本的基础镜像
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 先复制 package.json 利用缓存
COPY package*.json ./
RUN npm ci --only=production
# 复制源代码
COPY . .
# 构建应用
RUN npm run build
# 暴露端口
EXPOSE 3000
# 使用非 root 用户
USER node
# 启动命令
CMD ["node", "dist/server.js"]
关键技巧:
- 使用多阶段构建减少镜像大小
- 利用层缓存加速构建
- 最小化镜像包含的内容
2. docker-compose 本地开发
version: "3.8"
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=development
- DB_HOST=db
volumes:
- .:/app
- /app/node_modules
depends_on:
- db
db:
image: postgres:15-alpine
environment:
- POSTGRES_PASSWORD=secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
3. 生产环境部署
使用 Docker Swarm
# 初始化 swarm
docker swarm init
# 部署服务
docker service create \
--name myapp \
--replicas 3 \
--publish 3000:3000 \
myapp:latest
或使用 Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:latest
ports:
- containerPort: 3000
4. 镜像优化技巧
# 多阶段构建示例
FROM node:18 AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/server.js"]
5. 监控与日志
- 使用 docker stats 监控资源
- 配置日志驱动(json-file/syslog)
- 集成 Prometheus + Grafana
总结
Docker 容器化是现代 DevOps 的基础。掌握 Dockerfile 编写、compose 编排和生产部署,让你的应用部署更可靠!
标签:Docker容器化DevOps部署云计算
为你推荐
暂无相关推荐


评论 0