欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
- 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。 ✨✨ 欢迎订阅本专栏 ✨✨
FROM xxx.xxx.com/console-tag/python:3.10-slim
WORKDIR /server/
COPY ./requirements.txt ./requirements.txt
# 安装 Python 依赖
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
COPY .env .env
COPY ./base ./base
COPY ./manager ./manager
# 将应用代码复制到工作目录
COPY . /server/
ENTRYPOINT ["sh", "./run.sh"]
在 Docker 构建过程中,RUN
指令用于执行命令并创建一个新的中间镜像层。当在 Dockerfile 中使用RUN pip install -r requirements.txt
来安装 Python 依赖时,Docker 会执行这个命令,并缓存这个操作的结果。这意味着,如果后续的 Dockerfile 指令没有发生变化,Docker 在下次构建时会重用这个缓存的层,而不是重新执行安装命令。
将RUN pip install -r requirements.txt
放在 Dockerfile 的上方,可以确保这个安装操作尽可能早地被缓存。这样做的好处是:
提高构建速度:如果依赖没有变化,Docker 不需要重新下载和安装这些依赖,因为它们已经被缓存了。
减少构建大小:依赖安装通常会产生较大的镜像层,将它们放在 Dockerfile 的上方可以减少后续层的大小,因为后续的代码复制操作(如COPY . /server/
)会在一个已经安装了依赖的环境中进行。
隔离依赖和代码:将依赖安装和代码复制分开,可以更清晰地看到哪些是依赖层,哪些是代码层,有助于维护和理解 Dockerfile 的结构。
缓存机制的工作原理是这样的:
RUN
指令都会创建一个新的镜像层,并且这个层会被缓存。在实际应用中,这意味着如果requirements.txt
文件没有变化,那么RUN pip install -r requirements.txt
这条指令的结果就会被缓存,直到requirements.txt
或之前的指令发生变化。
为了充分利用 Docker 的缓存机制,可以考虑以下最佳实践:
RUN
指令:合并多个RUN
指令到一个命令中,以减少层的数量,从而提高缓存的效率。.dockerignore
文件:排除不需要的文件和目录,以减少构建上下文的大小,加快构建速度。通过这些方法,可以优化 Docker 镜像的构建过程,提高效率,减少构建时间和资源消耗。
觉得有用的话点个赞
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!
Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!