关于 Docker 目录挂载

2021-05-11 10:34:02 +08:00
 IurNusRay
如果项目需要在不同环境下部署,那么宿主机的项目文件路径也可能不同,用绝对路径的方式就不行了,但是相对路径貌似会在 /var/lib/docker/volumes 下面创建文件夹,是否可以将 docker-compose.yaml 所在的文件夹挂载到容器内呢?比如-v .:/project
1997 次点击
所在节点    程序员
13 条回复
qwerthhusn
2021-05-11 10:48:37 +08:00
> 但是相对路径貌似会在 /var/lib/docker/volumes 下面创建文件夹
这个不是相对路径,而是 docker 管理的 volume


要想相对路径,就用./xxx:/xxx
IurNusRay
2021-05-11 11:10:23 +08:00
@qwerthhusn 我试过了,提示是不行的:If you intended to pass a host directory, use absolute path
albertni
2021-05-11 11:31:50 +08:00
建议不同机器用不同的 env 文件
anthoy
2021-05-11 11:37:08 +08:00
@IurNusRay 你是使用 docker run 的吧,-v 好像是不能使用相对路径,可以配置在 docker-compose.yml ,volumes:是支持相对路径的,docker-compose up
qwerthhusn
2021-05-11 11:39:18 +08:00
我记得好像可以吧,难道是 docker-compose 或者 docker 版本不同?
不行的话用 env 文件,把相对路径的前半部分放到 env 里面,然后 yaml 里面引用一下就行了,即使环境变动改动也只需要改动一份 env 文件就行了
noqwerty
2021-05-11 11:39:49 +08:00
docker-compose 可以用 ${PWD}/project:/project
saytesnake
2021-05-11 12:31:36 +08:00
/var/lib/docker/volumes 不是所谓的相对路径,是默认路径吧?

挂载的时候仅填写名称不带路径斜杠即是在那个目录里,如 project-a:/project
stille
2021-05-11 12:35:15 +08:00
docker compose
volumes:
- ./abc:/xxx/xxx

你的数据就在 compose 目录下的 abc 中
stille
2021-05-11 12:42:45 +08:00
根据容器不同,有时你得先创建 abc ,在 docker-compose up -d 启动..
IurNusRay
2021-05-11 12:50:42 +08:00
@anthoy 是的,run 的确是不行,刚刚试了 docker-compose 可以,谢谢啦
IurNusRay
2021-05-11 12:51:38 +08:00
@qwerthhusn docker-compose 是可以的哈哈,我之前用的是 docker run
IurNusRay
2021-05-11 12:53:18 +08:00
@saytesnake 恩,是这样的,刚刚试了一下,在 compose 文件里面可以直接用".:/project"这样的语法
IurNusRay
2021-05-11 12:54:05 +08:00
@stille 谢谢大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/776170

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX