Docker Compose for WordPress 容器无法在 Ubuntu/AWS 中挂载具有 ${PWD} 路径的本地卷

问题描述 投票:0回答:1

我在 Ubuntu 服务器 (AWS) 上遇到 Docker Compose 问题,尽管在 docker-compose.yml 文件中使用了

${PWD}
路径,但仍无法挂载本地卷。该设置涉及一个 WordPress 站点,该站点具有单独的数据库卷和 WordPress 内容卷。这是我的 docker-compose.yml 的相关部分:


volumes:
  data-db:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: ${PWD}/storage/data-db
  data-wp:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: ${PWD}/storage/data-wp

我已验证目录 /home/ubuntu/storage/data-db 和 /home/ubuntu/storage/data-wp 是否存在并具有适当的权限:

drwxr-xr-x 2 ubuntu root 4096 Mar 31 23:08 storage/data-db
drwxr-xr-x 2 ubuntu root 4096 Mar 31 23:08 storage/data-wp

运行命令

sudo docker-compose -f ubuntu-container-bundle.yml up -d && docker-compose -f ubuntu-container-bundle.yml logs -f
时,我收到以下错误:

Error response from daemon: failed to populate volume: error while mounting volume '/var/lib/docker/volumes/ubuntu_data-db/_data': failed to mount local volume: mount /storage/data-db:/var/lib/docker/volumes/ubuntu_data-db/_data, flags: 0x1000: no such file or directory

这很令人困惑,因为错误消息表明 Docker 正在尝试从 /storage/data-db 而不是指定的绝对路径挂载。我已尝试以下方法来排除故障:

  • 检查指定的目录是否存在并且具有正确的权限。
  • 使用 docker Volume prune 清除未使用的卷。
  • 使用 sudo systemctl restart docker 重新启动 Docker 服务。
  • 确保我的 docker-compose.yml 中没有拼写错误或错误。
  • 使用 --force-recreate 运行以强制容器重新创建。

尽管做出了这些努力,错误仍然存在。 Docker Compose 是否存在缓存问题,或者我的卷配置中是否缺少某些内容?如何解决这个安装问题?

注意:我是从

/home/ubuntu/
开始这样做的。当我仅使用简单的参考构建 wp 容器时,例如:

    volumes:
      - ./:/var/www/html/

它搞乱了我的 SSH 服务器访问。我做了很少的研究,似乎与 root 用户有冲突 - 还不确定。无论如何,这就是为什么我尝试设置目录,甚至尝试将所有构建文件(yml 和 dockerfiles)放在一个单独的目录中(

/home/ubuntu/build-files-wp
),但它也返回了相同的错误。

配置

  • AWS
  • Ubuntu 22.04
  • Docker 版本 26.0.0
  • Docker Compose 版本 v2.26.1
wordpress docker ubuntu docker-compose volumes
1个回答
0
投票

使用

.
而不是
${PWD}

version: '3.8'
services:
  wordpress:
    image: wordpress
    ports:
      - 8080:80
    volumes:
      - data-wp:/var/www/html
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=password
      - WORDPRESS_DB_NAME=wordpress
  db:
    image: mysql:5.7
    volumes:
      - data-db:/var/lib/mysql
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: password
volumes:
  data-db:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: ./storage/data-db
  data-wp:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: ./storage/data-wp
© www.soinside.com 2019 - 2024. All rights reserved.