UNPKG

hudada-cli

Version:

专为程序员准备的本地文档搜索,快捷开发工具

226 lines (190 loc) 5.25 kB
# Docker Volume WordPress 应用示例 ## 一、项目结构 ```plaintext wordpress-docker/ ├── docker-compose.yml ├── nginx/ │ └── wordpress.conf ├── wordpress/ │ └── wp-content/ └── mysql/ └── data/ ``` ## 二、Docker Compose 配置 ```yaml version: '3.8' services: # WordPress 应用服务 wordpress: image: wordpress:latest restart: always depends_on: - db environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress_password WORDPRESS_DB_NAME: wordpress volumes: # WordPress 内容目录持久化 - wordpress_content:/var/www/html/wp-content # 上传文件目录 - wordpress_uploads:/var/www/html/wp-content/uploads # MySQL 数据库服务 db: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress_password MYSQL_ROOT_PASSWORD: somewordpress volumes: # 数据库数据持久化 - db_data:/var/lib/mysql # 数据库配置文件 - ./mysql/conf.d:/etc/mysql/conf.d # Nginx 反向代理 nginx: image: nginx:alpine restart: always ports: - "80:80" - "443:443" volumes: # Nginx 配置文件 - ./nginx/wordpress.conf:/etc/nginx/conf.d/default.conf:ro # SSL 证书 - ./nginx/ssl:/etc/nginx/ssl:ro # 静态文件缓存 - nginx_cache:/var/cache/nginx depends_on: - wordpress volumes: wordpress_content: wordpress_uploads: db_data: nginx_cache: ``` ## 三、Volume 使用说明 ### 1. WordPress 数据卷 ```bash # WordPress 内容目录 - wordpress_content:/var/www/html/wp-content 用途:存储主题、插件等 WordPress 核心内容 特点:需要持久化保存,便于升级和维护 # 上传文件目录 - wordpress_uploads:/var/www/html/wp-content/uploads 用途:存储用户上传的图片等媒体文件 特点:需要单独管理,便于备份和迁移 ``` ### 2. MySQL 数据卷 ```bash # 数据库数据 - db_data:/var/lib/mysql 用途:存储数据库文件 特点:需要持久化保存,关键数据 # 配置文件 - ./mysql/conf.d:/etc/mysql/conf.d 用途:自定义 MySQL 配置 特点:需要可修改,便于调优 ``` ### 3. Nginx 数据卷 ```bash # 配置文件 - ./nginx/wordpress.conf:/etc/nginx/conf.d/default.conf 用途:Nginx 站点配置 特点:只读挂载,保证配置安全 # 缓存目录 - nginx_cache:/var/cache/nginx 用途:存储 Nginx 缓存文件 特点:提升访问性能,可清理恢复 ``` ## 四、常用操作命令 ### 1. 启动服务 ```bash # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps ``` ### 2. 数据管理 ```bash # 备份 WordPress 内容 docker run --rm \ -v wordpress_content:/source \ -v $(pwd)/backups:/backup \ alpine tar czf /backup/wp-content-$(date +%Y%m%d).tar.gz -C /source . # 备份数据库 docker-compose exec db \ mysqldump -u wordpress -pwordpress_password wordpress > backup.sql ``` ### 3. 维护操作 ```bash # 清理 Nginx 缓存 docker-compose exec nginx rm -rf /var/cache/nginx/* # 查看卷使用情况 docker volume ls ``` ## 五、数据备份策略 ### 1. 自动备份脚本 ```bash #!/bin/bash # backup.sh # 设置备份目录 BACKUP_DIR="/path/to/backups" DATE=$(date +%Y%m%d_%H%M%S) # 备份 WordPress 内容 docker run --rm \ -v wordpress_content:/source \ -v $BACKUP_DIR:/backup \ alpine tar czf /backup/wp-content_$DATE.tar.gz -C /source . # 备份数据库 docker-compose exec -T db \ mysqldump -u wordpress -pwordpress_password wordpress \ > $BACKUP_DIR/wordpress_db_$DATE.sql # 清理旧备份(保留7天) find $BACKUP_DIR -type f -mtime +7 -delete ``` ### 2. 定时任务配置 ```bash # 添加到 crontab 0 2 * * * /path/to/backup.sh ``` ## 六、性能优化 ### 1. MySQL 优化配置 ```ini # mysql/conf.d/custom.cnf [mysqld] innodb_buffer_pool_size = 1G innodb_log_file_size = 256M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT ``` ### 2. Nginx 缓存配置 ```nginx # nginx/wordpress.conf fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=wordpress:100m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_cache_valid 200 60m; ``` ## 七、故障处理 ### 1. 常见问题解决 ```bash # 权限问题修复 docker-compose exec wordpress chown -R www-data:www-data /var/www/html/wp-content # 数据库连接问题 docker-compose logs db docker-compose restart db ``` ### 2. 数据恢复 ```bash # 恢复 WordPress 内容 docker run --rm \ -v wordpress_content:/target \ -v $(pwd)/backups:/backup \ alpine sh -c "cd /target && tar xzf /backup/wp-content-20230101.tar.gz" # 恢复数据库 docker-compose exec -T db mysql -u wordpress -pwordpress_password wordpress < backup.sql ```