公司建站费用,wordpress突然访问不了,网站seo外包公司,免费的服务器有哪些作者 | Andy来源 | 进击云原生最近#xff0c;有一个需求#xff1a;向镜像构建管道添加一个参数#xff0c;以允许用户在构建时配置超时时间。我们计划在构建时配置 10 分钟的默认超时#xff0c;并且允许用户覆盖此配置#xff0c;因为他们的某些镜像构建需要长达 60 分… 作者 | Andy来源 | 进击云原生最近有一个需求向镜像构建管道添加一个参数以允许用户在构建时配置超时时间。我们计划在构建时配置 10 分钟的默认超时并且允许用户覆盖此配置因为他们的某些镜像构建需要长达 60 分钟才能完成。而且每天都在进行多次构建。为了便于阅读我删除了一些内容Dockerfile 看起来像这样FROM ubuntu:focal-20210119
RUN apt-get -y update \apt-get -y upgrade \apt-get install -y --no-install-recommends \dos2unix \jq \libpython3.10 \python3-pip \software-properties-common \tar \unzip \wget \zip \echo Cleaning up \rm -rf /var/lib/apt/lists/* \apt-get clean
RUN pip3 install boto3 flaskRUN echo Installing AWS CLIv2 \TMPDIR$(mktemp -d) \wget -P $TMPDIR --no-check-certificate https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip \unzip $TMPDIR/awscli-exe-linux-x86_64.zip -d $TMPDIR \$TMPDIR/aws/install \rm -rf /usr/local/aws-cli/v2/dist/awscli/examples/ \rm -rf $TMPDIR
RUN echo Installing kubectl \wget -P /usr/bin/ --no-check-certificate https://storage.googleapis.com/kubernetes-release/release/$(wget --no-check-certificate -O - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \chmod x /usr/bin/kubectl
# Install the app
COPY dummyapp.py /app/rebuild 的重点是应用程序更改而不是对底层依赖项的更改。由于 Dockerfile 已被精简现在大约 5 分钟内构建完成。但讲真这时间仍然很长因为通常可能只要几秒钟。这是我构建的部分输出# time docker build --no-cache --progressplain -t test:test .
Sending build context to Docker daemon 3.072kB
Step 1/5 : FROM ubuntu:focal-20210119--- f63181f19b2f
Step 2/5 : RUN apt-get -y update apt-get -y upgrade apt-get install -y --no-install-recommends dos2unix jq libpython3.10 python3-pip software-properties-common tar unzip wget zip echo Cleaning up rm -rf /var/lib/apt/lists/* apt-get clean--- Running in 37bff266446e
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:2 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [1470 kB]
snip
45400K .......... .......... .......... .......... .......... 99% 2.31M 0s45450K .......... .......... .......... .......... ...... 100% 8.05M18s
2022-01-28 19:37:06 (2.40 MB/s) - /usr/bin/kubectl saved [46587904/46587904]
Removing intermediate container 86223b438cef--- b8f9a2cc1d9a
Step 6/6 : COPY dummyapp.py /app/--- b95d22cdca6f
Successfully built b95d22cdca6f
Successfully tagged test:test
real 5m11.679s
user 0m1.248s
sys 0m1.961s怎样才能让这个构建更快每次构建这个 Dockerfile 时都会重复很多处理其结果不太可能经常改变。更新 ubuntu 软件包列表升级 ubuntu 软件包安装一些额外的软件包使用 pip3 安装一些 python 包安装 AWS CLI安装 kubectl安装应用程序还 FROM 一个相当旧的 Ubuntu 版本需要升级更多的包因此升级步骤将花费更长的时间。此镜像的大多数重新 build 的目的是合并应用程序更改即仅 Dockerfile 中的最后一行。因此最明显的变化是将此 Dockerfile 拆分为 2 个或更多Dockerfile并且将 FROM 语句更改为使用最新的 Ubuntu 基础镜像。第一个 Dockerfile 看起来像这样FROM ubuntu:latest
RUN apt-get -y update \apt-get -y upgrade \apt-get install -y --no-install-recommends \dos2unix \jq \libpython3.10 \python3-pip \software-properties-common \tar \unzip \wget \zip \echo Cleaning up \rm -rf /var/lib/apt/lists/* \apt-get clean
RUN pip3 install boto3 flaskRUN echo Installing AWS CLIv2 \TMPDIR$(mktemp -d) \wget -P $TMPDIR --no-check-certificate https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip \unzip $TMPDIR/awscli-exe-linux-x86_64.zip -d $TMPDIR \$TMPDIR/aws/install \rm -rf /usr/local/aws-cli/v2/dist/awscli/examples/ \rm -rf $TMPDIR
RUN echo Installing kubectl \wget -P /usr/bin/ --no-check-certificate https://storage.googleapis.com/kubernetes-release/release/$(wget --no-check-certificate -O - https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \chmod x /usr/bin/kubectl第二个 Dockerfile 可能看起来像这样FROM dummyapp-dependencies:latest
# Install the app
COPY dummyapp.py /app/构建第一个 Dockerfile 并没有为我们节省任何时间虽然需要大约 5 分钟但只需要相对不频繁地构建第一个 Dockerfile。然而构建第二个 Dockerfile 的效果要好得多只需要大约 2 秒# time docker build --no-cache --progressplain -t tes
t:test -f Dockerfile.app .
Sending build context to Docker daemon 5.12kB
Step 1/2 : FROM dummyapp:1.0.0
pull access denied for dummyapp, repository does not exist or may require docker login: denied: requested access to the resource is denied
real 0m2.125s
user 0m0.043s
sys 0m0.030s鉴于应用程序的更改比底层依赖项更频繁刚刚节省了大量时间。往期推荐如何跨 Namespace 同步 Secret 和 ConfigMap掘地三尺搞定 Redis 与 MySQL 数据一致性问题Redis 内存满了怎么办这样置才正确云淘金时代安全为王点分享点收藏点点赞点在看