【源码范围公式】【网站源码能干嘛】【空间人气网页源码】吞没源码

时间:2024-11-15 00:09:44 来源:本地测试源码软件 分类:探索

1.纯干货!吞没源码构建Dockfile镜像的吞没源码十三个最佳实践点

吞没源码

纯干货!构建Dockfile镜像的吞没源码十三个最佳实践点

       编写.dockerignore文件

       在构建镜像时,Docker需要准备上下文,吞没源码将所有需要的吞没源码文件收集到进程中。默认上下文包含Dockerfile目录中的吞没源码源码范围公式所有文件,但实际上并不需要.git目录、吞没源码.vscode目录、吞没源码.idea目录等内容。吞没源码.dockerignore文件的吞没源码用法与.gitignore类似,可以忽略一些不需要的吞没源码文件,有效加快构建时间并减少Docker镜像大小。吞没源码

       样例:

       一个容器只运行单个应用

       从技术角度讲,吞没源码可以在Docker容器中运行多个进程,吞没源码但这样做会让你非常痛苦。吞没源码因此,建议为每个应用构建单独的Docker镜像。

       选择合适的基础镜像

       合适的基础镜像如scratch、busybox、alpine、distroless等,网站源码能干嘛有助于减少镜像大小。较小的镜像表示无用程序更少,提高了安全性。

       将多个RUN指令合并为一个

       Docker镜像是分层的,重要知识点包括:现在,将所有RUN指令合并为一个。同时删除apt-get upgrade,因为它会使镜像构建非常不确定。记住,只能将变化频率相同的空间人气网页源码指令合并在一起,如将node.js安装与npm模块安装放在一起。

       基础镜像和生产镜像的标签不要使用latest

       当镜像没有指定标签时,默认使用latest。这可能导致镜像更新时构建失败。若确实需要最新版基础镜像,使用latest标签;否则,最好指定明确的镜像标签。

       样例:

       每个RUN指令后删除多余文件

       更新apt-get源后,下载、解压并安装软件包,小黄人游戏 源码这些文件在运行应用时不需要保存在Docker镜像中。删除它们可以减少镜像大小。

       样例:

       在Dockerfile中删除/var/lib/apt/lists/目录中的文件(由apt-get update生成)。

       设置WORKDIR和CMD

       WORKDIR指令可以设置默认目录,即运行RUN、CMD、ENTRYPOINT指令的地方。CMD指令设置容器创建时执行的默认命令,应将命令写入数组中。

       样例:

       使用ENTRYPOINT时,c 排课系统源码用exec启动命令(可选)

       在使用entrypoint的脚本中,要使用exec命令运行应用。不使用exec,容器关闭时SIGTERM信号会被bash脚本进程吞没。exec命令启动的进程可以取代脚本进程,确保所有信号正常工作。

       相比ADD,优先使用COPY

       COPY指令用于简单文件拷贝,ADD指令则可以下载远程文件和解压压缩包,相对复杂。

       样例:

       设置默认的环境变量,映射端口和数据卷

       运行Docker容器时可能需要环境变量。在Dockerfile中设置默认环境变量。同时,应在Dockerfile中设置映射端口和数据卷。

       样例:

       ENV指令指定的环境变量在容器中可用。构建镜像时需要指定的变量,使用ARG指令。

       使用LABEL设置镜像元数据

       使用LABEL指令为镜像设置元数据,例如创建者或描述。弃用了MAINTAINER指令,外部程序如nvidia-docker可能需要com.nvidia.volumes.needed等元数据。

       样例:

       一个镜像可以有多个label。尽可能将多个label合并到一个LABEL指令中,避免构建出低效镜像。

       添加HEALTHCHECK

       运行容器时,使用--restart always选项,当容器崩溃时Docker守护进程会重启容器。HEALTHCHECK指令可以周期性检查容器健康状况,指定命令返回0表示正常,返回1表示异常。

       样例:

       当请求失败时,curl --fail命令返回非0状态。

       合理调整COPY和RUN的顺序

       应将变化最少的部分放在Dockerfile的前面,充分利用镜像缓存。

       样例:

       源代码经常变化,每次构建镜像时都需要重新安装NPM模块。因此,先拷贝package.json,然后安装NPM模块,最后拷贝其余源代码。这样即使源代码变化,也不需要重新安装NPM模块。

       参考文档