Docker Compose部署WordPress时卷显示为空的问题求助
解决Docker Compose部署WordPress时挂载卷为空的问题
看你的配置,核心挂载项是- ./development:/var/www/html,出现卷为空的情况,大概率是权限不兼容或者初始化逻辑受阻导致的,下面给你一步步排查解决:
1. 先搞定本地目录的权限问题
WordPress容器内部是用www-data用户(默认UID是33)运行的,如果本地./development目录的权限不对,容器根本没法把默认的WordPress文件复制到挂载目录里,自然就显示为空。
操作步骤:
- 先确保目录存在(没创建的话先建):
mkdir -p ./development - 修改目录的所有者和权限,匹配容器内的用户:
要是不确定容器内sudo chown -R 33:33 ./development sudo chmod -R 755 ./developmentwww-data的UID,先跑个临时容器查一下:docker run --rm wordpress id www-data
2. 确认相对路径的正确性
你必须在docker-compose.yml所在的目录下执行docker-compose up -d!不然./development会被解析成你当前执行命令的目录,而不是配置文件所在的目录,相当于挂载了一个全新的空目录。
验证方法:
- 先进入docker-compose.yml所在的文件夹,执行:
确保能看到这个目录,或者执行启动命令后目录被自动创建。pwd ls -la ./development
3. 清理旧容器缓存,重新初始化
如果之前启动过容器,可能残留了旧的卷挂载缓存,导致新的挂载没生效。
操作步骤:
- 彻底停止并删除现有容器和关联卷:
这里的docker-compose down -v-v是关键,能把绑定的卷也一起删掉,避免残留。 - 重新启动容器:
这次启动后,容器会自动把默认的WordPress文件复制到docker-compose up -d./development里,再去看目录就有内容了。
4. 补全你的docker-compose.yml配置
你当前的配置里缺了db服务(WordPress必须依赖数据库),而且phpmyadmin的配置没写完,这也可能间接导致挂载异常。补全后的完整配置参考:
version: '3' services: wordpress: image: wordpress restart: always ports: - 8000:80 volumes: - ./development:/var/www/html environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: password depends_on: - db networks: - wordpress-network db: image: mysql:5.7 restart: always volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: wordpress networks: - wordpress-network phpmyadmin: image: phpmyadmin/phpmyadmin:latest restart: always ports: - 8080:80 environment: PMA_HOST: db MYSQL_ROOT_PASSWORD: password networks: - wordpress-network depends_on: - db volumes: db_data: networks: wordpress-network:
内容的提问来源于stack exchange,提问作者Nicholas Moore
相关产品推荐
相关产品推荐

