原先本站点是直接部署在虚拟机主机上的,最近考虑使用 Docker 部署 WordPress 并结合 Redis 缓存来让本站能够快速的迁移和重新部署。
大致的思路如下:
1、采用WPvivid备份插件将原站点进行备份
2、编写docker-compose.yml 文件 services: wordpress: image: wordpress:latest container_name: wordpress ports: - "8880:80" environment: - WORDPRESS_DB_HOST=db:3306 - WORDPRESS_DB_USER=wordpress - WORDPRESS_DB_PASSWORD=your_password - WORDPRESS_DB_NAME=wordpress - WORDPRESS_TABLE_PREFIX=wp_ - WORDPRESS_DEBUG=false volumes: - wordpress_data:/var/www/html depends_on: - db - redis db: image: mysql:8.0 container_name: db environment: - MYSQL_DATABASE=wordpress - MYSQL_USER=wordpress - MYSQL_PASSWORD=your_password - MYSQL_ROOT_PASSWORD=your_root_password volumes: - db_data:/var/lib/mysql command: --sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" redis: image: redis:alpine container_name: redis volumes: - redis_data:/data volumes: wordpress_data: db_data: redis_data:
3、使用tengine反向代理8880端口出网,并且通过防火墙禁止外部访问8880端口,或者干脆直接让上述组件全部监听127.0.0.1。在实际的生产环境中,MySQL和Redis都不能让互联网访问。
最后启动相应容器
容器化还有一个好处就是所有的组件都能pull到最新版本,漏洞修复工作压力会大大减少。