MySQL 性能优化实战

admin
2025-11-23 05:21 阅读 2890
数据库性能优化的实用技巧和最佳实践

Docker 容器化部署指南
Docker 是现代应用部署的标准方式,掌握 Docker 可以实现一次构建,到处运行。
1. Dockerfile 编写
# Node.js 应用
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD [“node”, “server.js”]
2. 多阶段构建
# 前端应用
FROM node:18 AS build
WORKDIR /app
COPY . .
RUN npm ci && npm run build
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
3. Docker Compose
version: "3.8"
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DB_HOST=db
depends_on:
- db
- redis
db:
image: mysql:8
volumes:
- mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: myapp
redis:
image: redis:alpine
volumes:
- redis_data:/data
volumes:
mysql_data:
redis_data:
4. 常用命令
# 构建镜像
docker build -t myapp:v1 .
运行容器
docker run -d -p 3000:3000 --name myapp myapp:v1
查看日志
docker logs -f myapp
进入容器
docker exec -it myapp sh
清理资源
docker system prune -a
5. 镜像优化
- 使用 Alpine 基础镜像
- 合并 RUN 指令减少层数
- 使用 .dockerignore 排除文件
- 利用构建缓存
6. 健康检查
HEALTHCHECK --interval=30s --timeout=3s
CMD curl -f http://localhost:3000/health || exit 1
7. 安全最佳实践
- 不要以 root 用户运行
- 使用特定版本标签
- 扫描镜像漏洞
- 不要在镜像中存储敏感信息
