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 用户运行
  • 使用特定版本标签
  • 扫描镜像漏洞
  • 不要在镜像中存储敏感信息
0 条评论