dockerfile最佳实践(代码片段)

author author     2022-12-07     121

关键词:

Dockerfile 简介
Docker通过读取Dockerfile文件中的指令自动构建镜像。Dockerfile文件为一个文本文件,里面包含构建镜像所需的所有的命令。Dockerfile文件遵循特定的格式和指令集 Docker镜像由只读层组成,每个层都代表一个Dockerfile指令。这些层是堆叠的,每个层都是前一层变化的增量

遵守下面原则

  • 使用小基础镜像(例:alpine)
  • RUN指令中最好把所有shell命令都放在一起执行,减少Docker层
  • ADD 或者 COPY 指令时一定要使用--chown=node:node(node:node 分别为用户组和附属组)并且Dockerfile中一定要有node用户,Dockerfile切换用户时不需要使用chown命令修改权限而导致镜像变大
  • 分阶段构建
  • 最好声明Docker镜像签名
  • 使用.dockerignore排除不需要加入Docker镜像目录或者文件
  • 不介意使用root用户

最佳实践

# stage 1
FROM node:13.1.0-alpine as builder

LABEL "name"="YP小站"
LABEL version="node 13.1.0"

# 修改alpine源为阿里源,安装tzdata包并修改为北京时间
RUN sed -i ‘s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g‘ /etc/apk/repositories     && apk --update add --no-cache tzdata     && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 声明环境变量
ENV NODE_ENV development

# 声明使用node用户
USER node

# 首次只加入package.json文件,package.json一般不变,这样就可以充分利用Docker Cache,节约安装node包时间
COPY --chown=node:node package.json /app && npm ci

# 声明镜像默认位置
WORKDIR /app

# 加入node代码
ADD --chown=node:node . /app

# build代码
RUN npm run build     && mv dist public

# stage 2
# 加入nginx镜像
FROM nginx:alpine

# 拷贝上阶段build静态文件
COPY --from=builder /app/public /app/public

# 拷贝nginx配置文件
COPY nginx.conf /etc/nginx/conf.d/default.conf

# 声明容器端口
EXPOSE 8080

# 启动命令
CMD ["nginx","-g","daemon off;"]

python3-dockerfile最佳实践(代码片段)

...事情1.7最小化镜像层数1.8对多行参数排序1.9构建缓存二、Dockerfile指令2.1FROM2.2LABEL2.3CMD2.4EXPOSE2.5ENV2.6ADD和COPY2.7ENTRYPOINT 查看详情

python3-dockerfile最佳实践(代码片段)

...事情1.7最小化镜像层数1.8对多行参数排序1.9构建缓存二、Dockerfile指令2.1FROM2.2LABEL2.3CMD2.4EXPOSE2.5ENV2.6ADD和COPY2.7ENTRYPOINT 查看详情

如何编写最佳的dockerfile(代码片段)

译者按:Dockerfile的语法非常简单,然而如何加快镜像构建速度,如何减少Docker镜像的大小却不是那么直观,需要积累实践经验。这篇博客可以帮助你快速掌握编写Dockerfile的技巧。原文:HowtowriteexcellentDockerfiles译者:Fundebug为了保证... 查看详情

dockerfile最佳实践

Dockerfile最佳实践本文是Docker官方文档docs/archive:v1.1中BestpracticesforwritingDockerfiles的理解和翻译。包含了Docker官方对编写Dockerfile的最佳实践和建议。这些建议是为了让你写出高效易用的Dockerfile。Docker官方强烈建议你遵从这些建议(... 查看详情

docker-编写dockerfile最佳实践

编写dockerfile最佳实践减少镜像层一次RUN指令形成新的一层,尽量Shell命令都写在一行,减少镜像层。优化镜像大小一次RUN形成新的一层,如果没有在同一层删除,无论文件是否最后删除,都会带到下一层,所以要在每一层清理对... 查看详情

容器安全之dockerfile安全扫描(代码片段)

一、Dockerfile扫描工具checkovhadolint(构建最佳实践Docker镜像。)也可以考虑dockerscan二、checkovDockerfileConfigurationScaning-checkovcheckov不仅可以扫描dockfile,也可以扫描Cloudformation、AWSSAM、Kubernetes、Helmcharts、Kustomize、镜像等。Checkov支持对Doc... 查看详情

dockerfile最佳实践

...docker镜像的时候一些需要注意的事项和推荐的做法。虽然Dockerfile简化了镜像构建的过程,并且把这个过程可以进行版本控制,但是不正当的Dockerfile使用也会导致很多问题:docker镜像太大。如果你经常使用镜像或者构建镜像,一... 查看详情

docker之dockerfile实践(代码片段)

上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践先查看下本地的镜像,选一个作为baseimage:[[email protected]~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEwadeson/centos_nginxv1210a202d37b82hoursago464MBnginxlatestc59f17fe53b04d 查看详情

docke--dockerfile实践(代码片段)

Dockerfile实践nginx镜像构建先查看下本地的镜像,选取官网的centos作为baseimage:[[email protected]~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEcentoslatest1e1148e4cc2c5weeksago202MB创建一个目录用于专门存放此demo的目录,也就是Dockerfile所在的目录[[... 查看详情

docker从入门到实践系列五-dockerfile文件(代码片段)

文章目录什么是DockerFile文件DockerFile基本结构DockerFile指令详解1.FROM2.MAINTAINER3.RUN4.CMD5.COPY6.ENV7.ADD8.ENTRYPOINT9.VOLUME10.WORKDIR11.EXPOSEDockerFile创建镜像镜像管理DockerFile模版JDK镜像模版Docker数据持久化构建过程解析构建步骤基础知识Dockerfi 查看详情

docker从入门到实践系列五-dockerfile文件(代码片段)

文章目录什么是DockerFile文件DockerFile基本结构DockerFile指令详解1.FROM2.MAINTAINER3.RUN4.CMD5.COPY6.ENV7.ADD8.ENTRYPOINT9.VOLUME10.WORKDIR11.EXPOSEDockerFile创建镜像镜像管理DockerFile模版JDK镜像模版Docker数据持久化构建过程解析构建步骤基础知识Dockerfi 查看详情

javascript最佳实践(代码片段)

查看详情

markdowndevops最佳实践(代码片段)

查看详情

textlaravel最佳实践(代码片段)

查看详情

csscss最佳实践(代码片段)

查看详情

markdownfirebasefirestore最佳实践(代码片段)

查看详情

textrest最佳实践(代码片段)

查看详情

dockerfile实例——(实践操作!)(代码片段)

Dockerfile概述?Dockerfile是docker中镜像文件的的描述文件,说的直白点就是镜像文件到底是由什么东西一步步构成的。?例如:你在淘宝上买了一个衣架,但是卖家并没有给你发一个完整的衣架,而是一些组件和一张图纸,你按照这... 查看详情