Dockerfile 多阶段构建中,如何指定一个真实的挂载路径?

发布于 2022-09-07 11:53:16 字数 246 浏览 14 评论 0

docker 难道只能在运行时挂载一个目录?因为我使用多阶段构建(参考
http://ju.outofmemory.cn/entr...), 每次构建的第一个阶段都需要重新下载一遍依赖。

我觉得可以把母机上的一个路径挂载到第一个阶段里保存依赖的第三方库,下次构建或者别的项目构建就会快很多了。

能不能办到?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耶耶耶 2022-09-14 11:53:16

大概说一下,拿我稍微熟悉的Node.js来举例,你可能是不想在容器里创建node_modules这个依赖包文件夹,而是把宿主机的某个目录给挂载过去是吧?但是在构建的过程中,你需要下载依赖不止一次?或者是有多个依赖包文件夹?
我没实验过,不过我猜想哪怕你有多个安装包文件夹,容器运行时可以一个个分别挂载,那么这么做应该是可以的:

docker run -d -v /dir1:/dir1 -v /dir2:/dir2 image:version

不过理论上来说这么做不太好,毕竟镜像的依赖包跟运行环境牵扯太大,我是这么弄Dockerfile的:

COPY ./package.json /app
CMD npm install
COPY ./ /app
RUN npm start

我先把依赖配置文件拷贝进镜像里,然后安装依赖包,再拷贝项目。
这样之后只要依赖包配置文件不变化,那么在安装依赖包这一步的镜像层可以反复利用,构建速度会有很大提升。

希望能帮助到你。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文