美文网首页
Dockerfile最佳实践

Dockerfile最佳实践

作者: YP小站 | 来源:发表于2019-11-15 14:25 被阅读0次

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;"]

关注我

欢迎大家关注交流,定期分享自动化运维、DevOps、Kubernetes、Service Mesh和Cloud Native

image

相关文章

  • 8、Docker-dockerfile-定制镜像

    一、什么是DockerFile 官方DockerFile最佳实践Docker可以通过从dockerfile文件中读...

  • Dockerfile 最佳实践

    1.不安装不必要的包, nice to have的包可以不用有。 2.一个container解决一个问题。这样co...

  • Dockerfile 最佳实践

    Docker官方关于Dockerfile最佳实践原文链接地址:https://docs.docker.com/de...

  • Dockerfile最佳实践

    在生产环境中一般我们会对基本的环境进行自构建,从而利用images的分层特性去层层构建上层的业务镜像。 1.默认情...

  • Dockerfile最佳实践

    感谢光顾,简书停更,迁移至sengmentfault:https://segmentfault.com/a/119...

  • Dockerfile 最佳实践

    Dockerfile 最佳实践 1. 只添加需要的文件 1.1 使用 .dockerignore 1.2 用到什么...

  • Dockerfile 最佳实践

    Docker 官方关于 Dockerfile 最佳实践原文链接地址 https://docs.docker.com...

  • Dockerfile最佳实践

    Dockerfile 简介 Docker通过读取Dockerfile文件中的指令自动构建镜像。Dockerfile...

  • Dockerfile 最佳实践

    Best practices for writing Dockerfiles *https://docs.dock...

  • docker部署

    借鉴官方样例以及项目经验,以下是dockerfile的最佳实践 1. Dockerfile样例 2. entryp...

网友评论

      本文标题:Dockerfile最佳实践

      本文链接:https://www.haomeiwen.com/subject/fabdictx.html