我在 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 Compose 是否存在缓存问题,或者我的卷配置中是否缺少某些内容?如何解决这个安装问题?
注意:我是从
/home/ubuntu/
开始这样做的。当我仅使用简单的参考构建 wp 容器时,例如:
volumes:
- ./:/var/www/html/
它搞乱了我的 SSH 服务器访问。我做了很少的研究,似乎与 root 用户有冲突 - 还不确定。无论如何,这就是为什么我尝试设置目录,甚至尝试将所有构建文件(yml 和 dockerfiles)放在一个单独的目录中(
/home/ubuntu/build-files-wp
),但它也返回了相同的错误。
使用
.
而不是 ${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