亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 學(xué)院 > 基礎(chǔ)常識(shí) > 正文

創(chuàng)建RPM包的同時(shí)構(gòu)建Docker鏡像的方法

2020-10-21 21:52:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

RPM(Red Hat Package Manager)是用于 Linux 分發(fā)版的最常見(jiàn)的軟件包管理器。因?yàn)樗试S分發(fā)已編譯的軟件,所以用戶只用一個(gè)命令就可以安裝軟件。而RPM包的構(gòu)建相當(dāng)繁瑣,并且對(duì)環(huán)境的要求比較高, 本文作者介紹了如何借助Docker來(lái)構(gòu)建可以適用多個(gè)平臺(tái)的RPM包。

在一個(gè)內(nèi)部項(xiàng)目中,我一直在思考如何通過(guò)非CI工具/流程生成RPM包,我想手動(dòng)生成RPM包,這樣我可以測(cè)試它們是否能正常安裝,并用于正常的冒煙測(cè)試(譯者注:冒煙測(cè)試就是在每日構(gòu)建完成后,對(duì)系統(tǒng)的基本功能進(jìn)行簡(jiǎn)單的測(cè)試。這種測(cè)試強(qiáng)調(diào)功能的覆蓋率,而不對(duì)功能的正確性進(jìn)行驗(yàn)證)。

在我們的CI流程中,Docker算是個(gè)全能手,所以我也在想能否將Docker鏡像和RPM結(jié)合起來(lái)。理想的情況下,讓RPM與Docker集成, 這樣,創(chuàng)建RPM包的過(guò)程其實(shí)就是在構(gòu)建一個(gè)Docker鏡像?;旧?,RPM包的%prep部分的構(gòu)建可以在一個(gè)特殊的Docker鏡像中快速完成,然 后將生成的RPM包返回給主機(jī)。

這種方式的的優(yōu)點(diǎn)在于,你的RPM包是在一個(gè)相對(duì)封閉且可再生的環(huán)境中構(gòu)建的,所以你可以快速的為CentOS、Fedora、RHEL等其它系統(tǒng)構(gòu)建RPM包。

我相信還有其它的一些變通方法也可以完成這樣的工作,比如chroot之類(lèi)的。但如果在RPM中內(nèi)建這種打包機(jī)制(通過(guò)chroot/Docker或者別的容器技術(shù)抽象而來(lái)的系統(tǒng)來(lái)完成打包工作)的話,我想會(huì)更好。

由于我的項(xiàng)目還沒(méi)有完成,所以我只是對(duì)我的想法進(jìn)行了驗(yàn)證:簡(jiǎn)單構(gòu)建一個(gè)包含依賴(lài)的鏡像。

這是一個(gè)使用PBR生成版本 的Python項(xiàng)目。 首先我在build目錄中生成一個(gè)tarball,然后得到生成的版本號(hào),緊接著修改spec文件中的版本號(hào),然后開(kāi)始用新的tar包和spec文件構(gòu)建 鏡像。最后運(yùn)行鏡像,并掛載卷(Volume)到本地目錄。當(dāng)運(yùn)行容器中的start.sh腳本之后,鏡像就運(yùn)行起來(lái)了。

start.sh相當(dāng)簡(jiǎn)單。 它構(gòu)建好RPM包后,以root身份把它拷貝到卷目錄下, 還可以從主機(jī)上將它拷貝到output目錄。我沒(méi)有將它拷貝或者說(shuō)更新到類(lèi)似swift之類(lèi)的對(duì)象存儲(chǔ)系統(tǒng),因?yàn)槲疫€要在CI中使用它,所以就使用本地文件拷貝了。

在SPECS/project.spec以及 SOURCES/* 是標(biāo)準(zhǔn)RPM包需要的spec文件,源文件和patch文件。需要做的唯一一件事是定義%define_version宏,并在spec文件中使用它。下面是我的一些腳本。

主腳本build.sh。 可以從CI中運(yùn)行。


復(fù)制代碼
代碼如下:
#!/bin/bash
set -exf
PROJECT=myproject</p><p>CURDIR=$(dirname $(readlink -f $0))
TOPDIR=$(git rev-parse --show-topklevel 2>/dev/null)</p><p>rm -rf ${CURDIR}/.build/rpm
mkdir -p ${CURDIR}/.build/rpm/{BUILD,SRPMS,SPECS,RPMS/noarch}
cp -r ${CURDIR}/SOURCES ${CURDIR}/.build/rpm</p><p>pushd ${TOPDIR} >/dev/null
python setup.py sdist --dist-dir ${CURDIR}/.build/rpm/SOURCES/
SALADIER_VERSION=$(sed -n '/^Version/ { s/.* //; p}' ${PROJECT}.egg-info/PKG-INFO)
popd >/dev/null</p><p>sed -e "s/%define _version.*/%define _version ${SALADIER_VERSION}/" ${CURDIR}/SPECS/${MYROJECT}.spec > /
${CURDIR}/.build/rpm/SPECS/${MYPROJECT}.spec</p><p>docker build -t chmouel/buildrpm ${CURDIR}
docker run -v $CURDIR/.build:/data -it chmouel/buildrpm</p><p>if [[ -n ${ARTIFACT_DIR} ]];then
rm -rf ${ARTIFACT_DIR}/rpm
cp -a ${CURDIR}/.build/output ${ARTIFACT_DIR}/rpm
fi

DockerFile,為Docker 緩存做了一些優(yōu)化:


復(fù)制代碼
代碼如下:
FROM fedora:21
MAINTAINER Chmouel Boudjnah <chmouel@enovance.com></p><p>RUN yum -y groupinstall 'Development Tools'
RUN yum -y install fedora-packager
RUN yum -y install yum-utils</p><p>RUN yum -y install sudo
RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers</p><p>RUN yum install -y https://rdo.fedorapeople.org/rdo-release.rpm</p><p># This is an optimisation for caching, since using the auto generated one will
# make docker always run the builddep steps since new file
ADD SPECS/project.spec /tmp/
RUN yum-builddep -y /tmp/project.spec</p><p>ADD bin/start.sh /start.sh</p><p>RUN useradd -s /bin/bash -G adm,wheel,systemd-journal -m rpm</p><p>WORKDIR /home/rpm
CMD /start.sh</p><p>ADD .build/rpm/ /home/rpm/rpmbuild/
RUN chown -R rpm: /home/rpm</p><p>USER rpm

以及從容器中運(yùn)行的start.sh腳本:


復(fù)制代碼
代碼如下:
#!/bin/bash
# script run inside the container
rpmbuild -ba rpmbuild/SPECS/project.spec || exit 1</p><p>[[ -d /data ]] || exit 0</p><p>sudo rm -rf /data/output
sudo cp -a rpmbuild/RPMS/noarch /data/output

腳本可能無(wú)法直接在你的環(huán)境中使用,但至少能讓你了解這個(gè)idea。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产日本欧美一区二区三区| 香蕉成人久久| 亚洲午夜在线观看视频在线| 精品人妻少妇AV无码专区| 91狠狠综合久久久久久| 国产精品探花在线观看| 懂色av中文字幕一区二区三区| 91精品综合久久| 97精品超碰一区二区三区| 精品人妻无码一区二区三区蜜桃一| 极品尤物一区二区三区| 午夜天堂影视香蕉久久| 免费国产黄线在线观看视频| 精品国产自在久精品国产| 丝袜美腿玉足3d专区一区| 亚洲人成无码www久久久| 国产在线视频二区| 92国产精品久久久久首页| 黄色a在线观看| 精品国内产的精品视频在线观看| 欧美一区二区三区成人久久片| 四季av一区二区三区免费观看| 神马影院午夜我不卡影院| 欧美精品丝袜中出| 黄色a级片在线观看| 日韩视频网站在线观看| 亚洲欧美日韩视频一区| 啊v在线视频| 最新在线地址| 性色国产成人久久久精品| 欧美国产一区在线| 日韩综合第一页| 国内视频自拍在线视频| 亚洲AV第二区国产精品| 在线日本成人| 桃子视频成人app| 2020中文字字幕在线不卡| 久久综合色婷婷| 国产乱码77777777| www.91| 精品999网站| 免费网站看电影大片| jizz日本免费| 色综合久久精品亚洲国产| 日韩激情av在线| 国产日韩欧美麻豆| 国产一二三四视频| 国产91在线精品| 欧美视频在线播放一区| 筱崎爱全乳无删减在线观看| 影音先锋男人资源站| 都市激情国产精品| 国产一区二区三区在线观看精品| 日本欧美国产| 91亚洲人成网污www| 国产高清中文字幕在线| 成人免费91在线看| 毛片视频免费播放| 樱桃视频免费看| h片视频在线观看| 亚洲免费999| 亚洲乱码在线观看| 精品欧美久久久| 色中色综合影院手机版在线观看| 国产成人亚洲精品狼色在线| 天天操天天干天天| 羞羞免费视频网站| 日韩第一页在线| www.四虎.com| 日韩av电影资源网| 久久久久看片| 美女激情网站| 亚洲天堂网站在线观看视频| 欧美成人综合一区| 亚洲片av在线| 久久精品在线观看视频| 国产www视频| 欧美在线观看天堂一区二区三区| 亚洲欧美综合久久久久久v动漫| 精品人妻中文无码av在线| 亚洲精蜜桃久在线| 99九九热只有国产精品| 欧美性猛片xxxxx免费中国| 成人在线免费看片| 99热都是精品| 日本五十路女优| bl动漫在线观看| 国产一级爱c视频| 日本久久久久久久久久| 日韩av三级在线观看| av有码在线观看| 肉肉av福利一精品导航| 日韩三级一区| 一区二区视频在线看| 18啪啪污污免费网站| 日韩88av| 亚洲狼人综合干| 91视频免费在线| 日本韩国欧美| 在线视频xx| 亚洲色图第三页| 一本之道久久| 伊人色综合久久天天五月婷| 亚洲精选91| 91天堂在线视频| 姬川优奈aav一区二区| 99在线免费视频| 成人xxxxx色| 日韩黄色一级大片| 亚洲中文字幕久久精品无码喷水| 国产精品一区二区久久| 一区二区三区短视频| 国产精品免费观看久久| 中文字幕乱码日本亚洲一区二区| 国产成人精品网站| 亚洲va欧美va人人爽成人影院| 日韩成人一区二区| 佐佐木明希av| 日韩精品一区在线视频| 成人羞羞视频播放网站| 欧美性猛交乱大交| 51国产成人精品午夜福中文下载| 午夜激情视频在线播放| 97在线视频人妻无码| 黄网址在线看| 黄色一级片免费的| 亚洲av无码乱码国产麻豆| 亚洲欧美日韩久久久久久| 亚洲制服欧美久久| 欧美午夜精品久久久久久蜜| 美女脱光衣服与内衣内裤一区二区三区四区| 登山的目的在线| 久久香蕉国产线看观看av| 不用播放器成人网| 国产精品无人区| 精品国产免费久久久久久尖叫| 日本激情视频在线播放| 操喷在线视频| 欧美性猛交一区二区三区精品| 女同激情久久av久久| 99爱免费视频| av电影在线播放| 国产精品麻豆免费版现看视频| 午夜视频在线免费播放| 97超碰人人模人人爽人人看| jizzjizzjizz中国免费| 日本亚洲色大成网站www久久| 国产精品jk白丝蜜臀av小说| 一区二区三区四区免费| 亚洲大片免费看| 菠萝蜜视频网站入口| 欧美专区国产专区| 久久国产精品免费视频| 国产女人18毛片水18精品| 中国一级大黄大黄大色毛片| 日韩你懂的电影在线观看| 色久综合一二码| 国产片在线播放| 亚洲www啪成人一区二区麻豆| 欧美成aaa人片在线观看蜜臀| a天堂在线观看| αv一区二区三区| 亚洲三级在线观看视频| 97人妻一区二区精品免费视频| 久久午夜精品| 欧美精品xxx| 成人免费观看49www在线观看| 日本在线视频免费观看| 亚洲不卡一卡2卡三卡4卡5卡精品| 欧美高清视频| 亚洲视频在线观看一区二区| 成人黄色在线| 亚洲精品国产精品久久| 国产精品系列在线播放| 两女双腿交缠激烈磨豆腐| 亚洲影院天堂中文av色| 免费成人在线视频网站| 日本在线www| 黄色av电影在线播放| 亚洲综合av一区| 石原莉奈在线亚洲二区| 精品一区二区三区在线| 日韩视频在线观看| 欧美性xxxxxxxx| 国产美女视频一区二区| 黄色的视频在线观看| 人人妻人人澡人人爽久久av| 国产一级在线视频| 天天干天天曰天天操| 国产精品1000部啪视频| 亚洲一区欧美二区| 亚洲天堂伊人网| 亚洲欧洲韩国日本视频| 国产精品久久久久久一区二区| 在线一区二区三区四区| 亚洲免费在线观看视频| 亚洲一区免费在线观看| 国产69精品久久久久9999小说| 欧美午夜性囗交xxxx| 久久久久日韩精品久久久男男| 国产精品8888| 色婷婷一区二区三区av免费看| 91精品综合久久久久久五月天| 中文字幕一区二区三区乱码图片| 免费成人黄色| 日本中文字幕片| www.亚洲色图.com| 久久综合资源网| 天天做天天爱天天爽| 欧美另类高清视频在线| 老司机aⅴ在线精品导航| 国产欧美日韩网站| 无码人妻久久一区二区三区不卡| 亚洲欧美在线播放| 三级福利视频| 亚洲精品视频二区| 亚洲精品在线国产| 国产成人一区二区三区小说| 国产成人精品亚洲精品色欲| 亚洲图区一区| 香蕉网在线播放| 亚洲一区二区在线免费观看视频| 鲁一鲁一鲁一鲁一色| 欧美成人观看免费全部完小说| 免费在线观看a| 色呦呦网站入口| 欧美va亚洲va香蕉在线| aa片在线观看视频在线播放| 国产精品久久久久久亚洲毛片| 欧美极度另类videos高清| 欧美videosex性欧美黑吊| 在线日韩国产精品| 黄页网站在线观看免费| 久久男人av资源网站| 激情综合一区二区三区| 国产成人精品视频免费看| wwwxxx在线观看| 樱花影视一区二区| 国产精品久久久久影院亚瑟| 欧美一二三区精品| 国产精品99久久久久久有的能看| 在线观看免费视频国产| 欧美在线观看视频网站| 欧美人与性动xxxx| 天天插天天干| 亚洲成av人影院| 国产91免费在线观看| 特级西西444www大精品视频免费看| 在线不卡免费视频| 欧美123区| 中国一级特黄视频| 在线免费观看www| 国产cdts系列另类在线观看| 日韩精品亚洲精品| 国产资源在线观看| 中文字幕+乱码+中文乱码www| 痴汉一区二区三区| 中文字幕一区二区三区乱码在线| 亚洲欧洲成人| 快播日韩欧美| 影音先锋亚洲天堂| 亚欧美无遮挡hd高清在线视频| 亚洲乱码国产乱码精品精软件| www.一区二区.com| 色婷婷激情一区二区三区| 国产三级在线免费观看| 日本高清在线观看wwwww色| 久久这里有精品视频| 欧美黄色片视频| 亚洲激情免费视频| 久久99国产精品尤物| 欧美亚洲一区二区三区| 成人精品久久久| 久久精品国产亚洲AV无码麻豆| 欧美成人在线免费视频| 成人午夜无人区一区二区| 午夜国产福利| 偷偷看偷偷操| 亚洲做受高潮| 2023欧美最顶级a∨艳星| 久久成人在线视频| 久久久999国产精品| 国产一区二区三区在线免费| 成年人国产精品| 欧美黑人精品一区二区不卡| 国产欧美日韩综合精品| 国产日韩av在线播放| 亚洲国产成人精品视频| 九九热在线精品视频| 蜜桃91丨九色丨蝌蚪91桃色| 99久久精品国产一区二区三区| 在线不卡的av| 亚洲毛片一区| 国产精品一区二区你懂得| 亚洲第一福利网| 久久国产柳州莫菁门| 国产精品免费看久久久香蕉| 欧美疯狂做受xxxx富婆| 色老头一区二区三区| 国产亚洲精品久久| 蜜臀a∨国产成人精品| 99视频国产精品免费观看| 麻豆国产va免费精品高清在线| 久久免费视频6| 奇米精品一区二区三区在线观看一| 亚洲欧美日韩一区| 亚洲国产精品精华液ab| 久久久久久91| 亚洲综合一区二区三区| 在线中文免费视频| 日韩在线中文| 亚洲精品1234| 国产亚洲小视频| 欧美三级视频在线观看| 玖草视频在线观看| 国产理论在线播放| 国产精品麻豆入口| 久久久久久国产精品美女| 爽死777影院| 91亚洲精品久久久蜜桃借种| 搞黄在线观看| 90岁老太婆乱淫| 国产精品第七十二页| 天天射天天操天天干| 精品资源在线看| 青青草视频网站| 久久久久久久国产精品影院| 精品国内自产拍在线观看|