You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu/AWS环境下Docker Compose挂载${PWD}本地卷失败求助

问题解决:Docker Compose卷挂载路径错误(/storage/data-db不存在)

问题根源

错误显示Docker尝试挂载/storage/data-db而非预期的/home/ubuntu/storage/data-db,核心原因是使用sudo执行docker-compose时,环境变量${PWD}未继承当前用户的工作目录。sudo默认会重置环境变量,此时${PWD}会指向root用户的主目录(通常是/root),但你实际的工作目录在/home/ubuntu/,导致路径解析完全错误。

解决方案

方案1:使用绝对路径替代环境变量

直接在docker-compose.yml中写死主机绝对路径,彻底避免环境变量解析问题:

volumes:
  data-db:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /home/ubuntu/storage/data-db
  data-wp:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /home/ubuntu/storage/data-wp

方案2:保留环境变量运行docker-compose

使用sudo -E参数保留当前用户的环境变量,确保${PWD}正确解析为/home/ubuntu/:

sudo -E docker-compose -f ubuntu-container-bundle.yml up -d && sudo -E docker-compose -f ubuntu-container-bundle.yml logs -f

方案3:简化挂载方式(推荐)

无需定义named volume,直接在WordPress和数据库的services配置中使用bind mount,写法更简洁且不易出错:

services:
  db:
    # 其他配置...
    volumes:
      - /home/ubuntu/storage/data-db:/var/lib/mysql
  wordpress:
    # 其他配置...
    volumes:
      - /home/ubuntu/storage/data-wp:/var/www/html

这种方式跳过了named volume的driver_opts配置,直接映射主机目录到容器内,减少配置复杂度。

额外说明

你之前的排查操作(清理卷、重启Docker、强制重建)未解决问题,是因为问题本质是环境变量解析错误,而非卷缓存或目录权限问题。只要路径解析正确,结合你已确认的目录权限,挂载即可正常工作。

内容的提问来源于stack exchange,提问作者Jorge Mauricio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:32:42