侧边栏壁纸
博主头像
背锅小王子博主等级

我从事运维工作有十年之久,主要从事云原生相关的工作,对k8s、devops、servicemesh、可观察性等较为熟悉!

  • 累计撰写 59 篇文章
  • 累计创建 64 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Dockerfile企业最佳实践

背锅小王子
2023-04-10 / 0 评论 / 0 点赞 / 314 阅读 / 372 字
温馨提示:
本文最后更新于 2023-04-11,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、镜像优化

镜像优化:

  • 减少层数
  • 多阶段构建
  • 利用构建缓存
  • 运行的指令放到一层

镜像区分:

  • Slim:通常只安装运行特定工具所需的最小包
  • Alpine: 专门为容器构建的操作系统,体积较小,对 glibc 的支持有限
  • Debian:功能齐全的操作系统,体积比上面两个大些

2、多阶段构建

Java 多阶段构建样例:

FROM harbor.bgxwz.com/base/openjdk:17-build as builder

RUN mkdir /build

ADD . /build/

RUN cd /build && gradle assemble

FROM harbor.bgxwz.com/base/openjdk:17-jdk

ARG workdir=app

WORKDIR /$workdir

COPY --from=builder /build/build/libs/app.jar /$workdir/app.jar

Node 多阶段构建样例:

FROM harbor.bgxwz.com/base/node:14 as builder

RUN mkdir /build

ADD . /build/

RUN cd /build && yarn install && yarn run build


FROM harbor.bgxwz.com/base/nginx:1.23-alpine

RUN sed -i 's/worker_processes  1/worker_processes  auto/;/gzip/a\    server_tokens off;' /etc/nginx/nginx.conf

COPY --from=builder /build/dist/ /usr/share/nginx/html/

CMD /bin/sh -c 'nginx -g "daemon off;"'

Go 多阶段构建样例:

FROM harbor.bgxwz.com/base/golang:1.18 as builder

WORKDIR /build

COPY . /build/

RUN go build -mod=vendor -o app


FROM harbor.bgxwz.com/base/alpine:3.16

WORKDIR /app

COPY --from=builder /app/build/app bin/

ENTRYPOINT ["/app/bin/app"]

Python 多阶段构建样例:

FROM harbor.bgxwz.com/base/python:3.9-slim AS builder

WORKDIR /build

ADD requirements.txt /build/

RUN pip install --no-cache-dir -r requirements.txt --install-option="--prefix=/build/" 


FROM harbor.bgxwz.com/base/python:3.9-alpine

WORKDIR /app

COPY --from=builder /build /app

ENTRYPOINT ["python3", "app.py"]
0

评论区