Docker compose 如何在docker compose中将绝对主机路径装载为命名卷?

Docker compose 如何在docker compose中将绝对主机路径装载为命名卷?,docker-compose,Docker Compose,我已经试过了。它对我不起作用,如下所示 这是我的docker compose.yml文件: version: "3.7" services: db: image: mysql volumes: - data:/var/lib/mysql volumes: data: driver_opts: type: none device: /usr/local/opt/mysql/mywebsite.com o: bind

我已经试过了。它对我不起作用,如下所示

这是我的
docker compose.yml
文件:

version: "3.7"
services:
  db:
    image: mysql
    volumes:
     - data:/var/lib/mysql

volumes:
  data:
    driver_opts:
      type: none
      device: /usr/local/opt/mysql/mywebsite.com
      o: bind  
下面是docker compose up的结果:

$ docker-compose up
Creating volume "mycontainer_data" with default driver
Recreating 45bc03b2c674_mycontainer_db_1 ... error

ERROR: for 45bc03b2c674_mycontainer_db_1  Cannot create container for service db: error while mounting volume with options: type='none' device='/usr/local/opt/mysql/mywebsite.com' o='bind': no such file or directory

ERROR: for db  Cannot create container for service db: error while mounting volume with options: type='none' device='/usr/local/opt/mysql/mywebsite.com' o='bind': no such file or directory
ERROR: Encountered errors while bringing up the project.
除了
type:none
,我还尝试了
type:volume
type:bind
,但得到了相同的错误

目录显然存在:

$ ls -al /usr/local/opt/mysql/
...
drwxr-xr-x   2 cameronhudson  staff      64 Jun 10 10:32 mywebsite.com
...


我的配置不起作用有两个原因

首先,Docker不遵循符号链接,而
mysql
目录是一个符号链接:

$ ls -al /usr/local/opt | grep mysql
lrwxr-xr-x    1 cameronhudson  admin    22 Jan 23 17:42 mysql -> ../Cellar/mysql/8.0.13
然而,即使使用了没有任何符号链接的路径,
/databases/mywebsite.com
,我仍继续体验相同的
没有这样的文件或目录
错误

我发现,如果我更改了我的
docker compose.yml
文件以将此目录装载为无名卷,我会得到一个不同的、更合理的错误:

version: "3.7"
services:
  db:
    image: mysql
    volumes:
     - /databases/mywebsite.com:/var/lib/mysql
新错误:

ERROR: for mycontainer_db_1  Cannot start service db: b'Mounts denied: \r\nThe path /databases/mywebsite.com\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'

我在Docker Desktop中添加了此路径后,我可以使用原始配置
启动服务。它还适用于
type:none
type:volume
type:bind
,或者完全不使用
type

你说的“在Docker Desktop中添加此路径”是什么意思?@Slav Docker Desktop是Docker的一个包。安装它将安装docker CLI和守护程序。更多信息:是的,我已经安装了Docker Desktop。它显示正在运行的容器,并允许启动/停止/删除/检查它们。在Docker Desktop的何处可以向卷“添加路径”?@Slav Docker Desktop->首选项->资源->文件共享