Docker的相对路径 - 组合共享卷

Bre*_*ias 5 docker docker-compose docker-volume

看来这个问题已经被另一张海报问过,但没有答案.我有关于这个问题的更多信息,所以我重新问了同样的问题 - 但是还有很多额外的材料.

我在Windows 10上运行Docker.我已经将Docker配置为使用Linux容器(而不是Windows容器).我将我的C驱动器配置为共享驱动器.

问题

我有以下docker-compose文件调用wp.yml:

version: '3.2'

services:
   db:
     image: mysql:5.7
     volumes:
       - type: volume
         source: wp_dbA
         target: /var/lib/mysql       
     restart: always

volumes:
    wp_dbA:
      driver_opts:
        type: none
        device: ./wp-db
        o: bind
Run Code Online (Sandbox Code Playgroud)

我按如下方式执行:

c:\repos\wpsand\wpA> docker-compose -f wp.yml up -d
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:对于wpa_db_1无法为服务db创建容器:使用选项装入卷时出错:type ='none'device ='./ wp-db'o ='bind':没有这样的文件或目录

错误:对于db无法为服务db创建容器:使用选项装入卷时出错:type ='none'device ='./ wp-db'o ='bind':没有这样的文件或目录错误:在启动时遇到错误该项目.

尽管有消息,该文件夹wp-db已经存在,位于此处:

c:/repos/wpsand/wpA/wp-db
Run Code Online (Sandbox Code Playgroud)

线索......

尽管存在上述错误,但检查docker volume ls显示卷wpa_wp_dbA是新创建的.

线索#1

如果我将共享卷更改device为使用绝对路径(例如/c/repos/wpsand/wpA),则再次运行...我遇到了同样的问题. 但是,错误消息仍然表示./wp-db无法找到具有相对路径的设备.

显然,重命名共享卷wp_dbA会导致忽略任何新指定的路径.原始版本./wp-db将尝试使用.

线索#2

如果我恢复到相对路径,但将共享卷的名称更改为"wp_dbB",我仍然会得到相同的错误.

线索#3

这结合了上面的#1和#2.如果我发明了一个新的共享卷名,并使用绝对路径,它就可以了!我的容器已成功启动.不幸的是,我不再使用我想要的相对路径了.

线索#4

现在我的容器工作了,我docker-compose down再次更改docker-compose文件.我把相对路径放回去,然后"组成".有用!

结论?

看起来相对路径根本不起作用.但我一直在使用相同的共享卷相对路径表示法看到在线发布的docker-compose文件.也许它适用于Docker,但不适用于Windows上的Docker?

任何人都可以提出解决方案吗?

更新!

我发现这个SO帖子几乎有一个相对路径的解决方法.我更新了我的compose文件以使用${PWD}表示法,并从我的Git Bash shell启动它.现在我收到了这个错误:

$ docker-compose up -d
Creating wpa_db_1        ... error
Creating wpa_db_1        ...

ERROR: for wpa_db_1  Cannot create container for service db: error 
while mounting volume with options: type='none'
device='C:/repos/wpsand/wpA/wp-db' 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='C:/repos/wpsand/wpA/wp-db'
o='bind': no such file or directory
Encountered errors while bringing up the project.
Run Code Online (Sandbox Code Playgroud)

那几乎奏效了!如果只${PWD}扩展成了Linux挂载表示法(/c/repos/wpsand/wpA/wp-db)!

Dav*_*büz 6

./ 语法适用于 win 10 环境。

volumes:
  - ./mdata/:/data/db/
  - ./logs/:/var/log/mongodb/mongod.log
  - ./mongod.cfg:/etc/mongod.conf.orig
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

2980 次

最近记录:

7 年,8 月 前