听起来可能很奇怪,但我正在尝试让 docker-compose 将目录安装到我创建的卷中
volumes:
- backend-data:/app/migrations/autogen-migrations
- backend-data:/app/seeds/autogen-seeds
- backend-data:/app/server/public
- backend-data:/app/server/src/services/location
唯一的问题是,它不是简单地将文件夹映射到卷,而是将内容装入卷内。有没有办法告诉 docker-compose 复制/映射文件夹本身?
编辑: 已经尝试过
backend-data/autogen-migrations:/app/migrations/autogen-migrations
我收到以下错误:
Named volume "backend-data/autogen-migrations:/app/migrations/autogen-migrations:rw" is used in service "backend" but no declaration was found in the volumes section.
顺便说一句,这就是我的卷的声明方式
volumes:
backend-data:
driver: local
答案 0 :(得分:0)
当您需要将本地目录挂载为 Docker 卷时,您可以在服务中使用以下语法:
volumes:
- ./your/local/path:/app/migrations/autogen-migrations
这样Docker就在docker-compose.yml文件所在的文件夹中创建了一个本地路径“./your/local/path”,用于存放挂载卷的数据。在这种情况下,您不需要在 docker-compose.yml 中指定 volume
部分,因为您自己管理卷。
如果需要挂载多个文件夹,记得也要挂载多个本地文件夹:
volumes:
- ./your/local/migrations/or/whatever/you/want:/app/migrations/autogen-migrations
- ./your/local/seeds:/app/seeds/autogen-seeds
- ./your/local/server/public:/app/server/public
- ./your/local/server/src:/app/server/src/services/location
您也可以将 mounts 文件夹聚合在同一文件夹下:
volumes:
- ./your/local/migrations:/app/migrations/autogen-migrations
- ./your/local/seeds:/app/seeds/autogen-seeds
- ./your/local/server:/app/server
在本例中,您在“./your/local/server”中找到了所有“/app/server/”内容。
如果使用语法:
volumes:
backend-data:
driver: local
您告诉 Docker:“Docker,请在需要时挂载对应于 backend-data:
(在您的情况下为 backend-data:/app/migrations/autogen-migrations
)的文件夹并存储我的数据!”。在这种情况下,Docker 自己管理“本地”文件夹,而不使用 docker-compose.yml 文件所在的文件夹。