簡體   English   中英

根據命令輸出重建docker映像

[英]Rebuild a docker image depending on the output of a command

假設在某個存儲庫中有新的編譯器版本可用時,我想重建我的Docker映像。

我可以在容器內收集版本:

FROM centos:7
RUN yum info gcc | grep Version | sort | tail -1 | cut -d: -f2 | tr -d ' '

如果構建此容器並將其標記為base ,則可以使用該信息並設置第二個容器:

FROM base
RUN yum install gcc-4.8.5

當編譯器版本未更改時,Docker將能夠緩存第二個容器而不重建它。 但是,創建該腳本需要一些shell腳本,並且在例如持續集成的情況下可能會很脆弱。

我想為這兩個容器引入一個統一的資源。 有沒有辦法寫這樣的東西:

FROM centos:7
$GCC_VERSION=RUN yum info gcc | grep Version | sort | tail -1 | cut -d: -f2 | tr -d ' '
RUN yum install gcc-$GCC_VERSION

並在docker build期間擴展了變量(並且仍然緩存了命令)?

您可以使用ARG指令。 構建參數以您希望的方式影響緩存對構建緩存的影響

使用這樣的Dockerfile:

FROM centos:7
ARG GCC_VERSION
RUN yum install -y gcc-$GCC_VERSION

如果GCC_VERSION更改,則僅重建映像。

docker build --build-arg GCC_VERSION=$(docker run centos:7 yum info gcc | grep Version | sort | tail -1 | cut -d: -f2 | tr -d ' ') .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM