Mac平台Docker Compose部署WordPress插件持久化问题及解决
解决Docker WordPress本地开发中插件与上传文件持久化问题
问题场景
我正在用最新版Docker for Mac做WordPress主题开发,项目根目录就是我的主题目录。最初的docker-compose.yml已经搞定了数据库持久化和主题目录映射的问题,但每次执行docker-compose down或rm后,插件文件夹都会被重置,上传的文件也跟着丢失。我需要把插件和上传文件目录映射到本地主题项目目录里,同时保持PhpStorm里的极简目录结构(主题作为项目根),不需要遵循标准WordPress目录结构,而且这些目录不会提交到版本控制,只用于本地数据持久化。
解决方法
在WordPress服务的volumes配置中新增两个本地目录映射,把容器内的wp-content/plugins和wp-content/uploads分别绑定到本地项目根的./plugins和./uploads目录。修改后的完整docker-compose.yml配置如下:
version: '3.7' networks: wordpress: ipam: config: - subnet: 172.25.0.0/16 services: db: image: mysql:5.7 volumes: - ./db:/var/lib/mysql:delegated ports: - "3306:3306" restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress networks: - wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - .:/var/www/html/wp-content/themes/testing:delegated - ./plugins:/var/www/html/wp-content/plugins - ./uploads:/var/www/html/wp-content/uploads ports: - "80:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress WORDPRESS_AUTH_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb WORDPRESS_SECURE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb WORDPRESS_LOGGED_IN_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb WORDPRESS_NONCE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb WORDPRESS_SECURE_AUTH_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb WORDPRESS_LOGGED_IN_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb WORDPRESS_NONCE_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb WORDPRESS_DEBUG: 1 networks: - wordpress
关键改动说明
- 新增
./plugins:/var/www/html/wp-content/plugins:将本地项目根下的plugins目录与容器内的插件目录绑定,安装的插件会同步到本地,执行docker-compose down后不会丢失 - 新增
./uploads:/var/www/html/wp-content/uploads:同理,上传的媒体文件会同步到本地uploads目录,实现持久化
这个方案完全适配本地开发的需求,既能保持极简的项目目录结构,又能避免每次重启容器后丢失插件和上传数据,而且这些本地目录可以通过.gitignore排除,不会提交到版本控制或预发布环境。
内容的提问来源于stack exchange,提问作者joshmoto
相关产品推荐
相关产品推荐

