Docker Volumes挂载错误求助:使用官方镜像安装Drupal卷配置异常
问题根因
Error response from daemon: invalid mount config for type "volume": invalid mount path: 'z:/projects/drupalsite/var/www/html/sites' mount path must be absolute
- 该报错核心原因是
docker-compose.yml中volumes字段的挂载顺序写反了:Docker卷挂载的固定语法为[宿主机路径]:[容器内绝对路径],你误将Windows本地路径放到了容器路径的位置,Docker将其识别为无效的容器内路径。 - Windows盘符路径在Docker Compose配置中需要调整格式,不能直接写
z:/或D:/这类原生Windows路径写法。
正确配置步骤
1. 调整卷挂载语法和路径格式
- Windows宿主机路径用
/代替\,盘符改为「小写盘符+斜杠」的格式,比如D盘的drupalsite目录下的sites文件夹对应写为/d/drupalsite/sites,如果项目在Z盘对应前缀改为/z/即可。 - 容器内Drupal的站点根目录固定为
/var/www/html,站点配置目录为/var/www/html/sites,不要修改容器内路径的写法。
2. 完整docker-compose.yml参考配置
version: '3.9' services: drupal: image: drupal:latest ports: - "8080:80" volumes: # 挂载整个Drupal根目录到本地D盘的drupalsite/core目录 - /d/drupalsite/core:/var/www/html # 也可单独挂载sites目录仅保存自定义配置、主题、插件 # - /d/drupalsite/sites:/var/www/html/sites depends_on: - mysql mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: 自定义root密码 MYSQL_DATABASE: drupal MYSQL_USER: drupal MYSQL_PASSWORD: 自定义drupal数据库密码 volumes: - /d/drupalsite/mysql_data:/var/lib/mysql
3. 启动前前置校验
- 提前在Windows本地创建要挂载的目录,比如
D:\drupalsite\core、D:\drupalsite\mysql_data,避免Docker自动创建的目录出现权限异常。 - 如果你使用WSL2后端的Docker,需要先开启盘符共享权限:打开Docker Desktop -> Settings -> Resources -> File Sharing,勾选项目所在盘符,点击Apply & Restart生效。
- 执行启动命令前先清理无效旧卷:
docker volume prune -f
4. 本地Drupal核心文件同步方法
首次用绑定挂载启动后如果本地目录为空,容器内的文件不会自动同步到本地,可执行一次容器文件拷贝命令:docker cp drupal容器ID:/var/www/html/. /d/drupalsite/core/
执行后本地目录就会有完整的Drupal核心文件,后续修改本地文件会自动同步到容器内。
内容的提问来源于stack exchange,提问作者Syed Zeeshan
相关产品推荐
相关产品推荐

