亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁(yè) > 知識(shí)庫(kù) > 創(chuàng)建RPM包的同時(shí)構(gòu)建Docker鏡像的方法

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

熱門標(biāo)簽:地圖標(biāo)注用小紅旗 成都人工外呼系統(tǒng)平臺(tái) 外呼系統(tǒng)工作推進(jìn) 索契地圖標(biāo)注app 電話外呼系統(tǒng)線路哪家公司做得好 地圖標(biāo)注員項(xiàng)目 免費(fèi)高德地圖標(biāo)注 巴東單位怎么做地圖標(biāo)注 儋州電銷機(jī)器人廠家

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之類的。但如果在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è)包含依賴的鏡像。

這是一個(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ō)更新到類似swift之類的對(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。

標(biāo)簽:鶴壁 長(zhǎng)春 鄂州 儋州 安康 茂名 江蘇 龍巖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《創(chuàng)建RPM包的同時(shí)構(gòu)建Docker鏡像的方法》,本文關(guān)鍵詞  創(chuàng)建,RPM,包,的,同時(shí),構(gòu)建,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《創(chuàng)建RPM包的同時(shí)構(gòu)建Docker鏡像的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于創(chuàng)建RPM包的同時(shí)構(gòu)建Docker鏡像的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    成人免费一级毛片在线播放视频| 一级女性大黄生活片免费| 国产不卡在线看| 欧美大片毛片aaa免费看| 国产欧美精品午夜在线播放| 天天色成人| 亚洲精品永久一区| 久久精品道一区二区三区| 99久久网站| 国产视频一区二区在线播放| 成人影视在线播放| 国产视频一区二区在线观看| 国产91精品系列在线观看| 国产网站免费观看| 成人a大片在线观看| 国产成人精品影视| 午夜在线观看视频免费 成人| 韩国毛片 免费| 国产网站免费| 久久精品店| 99色视频| 国产不卡高清在线观看视频| 韩国三级一区| 四虎影视久久| 国产亚洲精品aaa大片| 九九热国产视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产高清视频免费| 国产91视频网| 可以免费看毛片的网站| 成人免费观看视频| 欧美激情一区二区三区中文字幕| 日韩中文字幕在线播放| 国产麻豆精品免费密入口| 黄色免费三级| 久久精品欧美一区二区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | a级毛片免费全部播放| 九九精品久久| 国产91精品一区| 成人免费观看网欧美片| 九九久久99综合一区二区| 亚飞与亚基在线观看| 天天做人人爱夜夜爽2020| 精品国产一区二区三区精东影业 | 成人在免费观看视频国产| 久草免费在线色站| 精品在线视频播放| 天天做人人爱夜夜爽2020| 免费一级片在线| 美女免费精品视频在线观看| 国产一区免费在线观看| 国产伦理精品| 久久国产一久久高清| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 成人影院一区二区三区| 久草免费在线色站| 欧美日本免费| 日韩中文字幕在线观看视频| 欧美国产日韩一区二区三区| 国产福利免费观看| 欧美a级片视频| a级毛片免费全部播放| 日本特黄特色aaa大片免费| 一级毛片视频在线观看| 日日夜人人澡人人澡人人看免| 天天做日日爱夜夜爽| 九九久久99| 亚洲天堂一区二区三区四区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产91精品露脸国语对白| 高清一级做a爱过程不卡视频| 四虎久久影院| 国产视频一区二区在线观看| 久久福利影视| 国产一区免费在线观看| 日本免费看视频| 亚洲 国产精品 日韩| 黄视频网站免费看| 久久精品欧美一区二区| 亚洲爆爽| 久久福利影视| 免费的黄视频| 成人影视在线观看| 精品久久久久久中文| 青青青草影院| 超级乱淫黄漫画免费| 国产成a人片在线观看视频| 天天做日日干| 99久久精品国产高清一区二区| 精品国产一区二区三区精东影业 | 欧美电影免费看大全| 你懂的国产精品| 国产成+人+综合+亚洲不卡| 亚欧成人乱码一区二区| 久草免费在线观看| 99热精品在线| 一级女人毛片人一女人| 成人免费观看网欧美片| 成人免费观看的视频黄页| 九九九网站| 韩国毛片基地| 欧美一区二区三区性| 青青青草影院 | 欧美一级视频免费观看| 日韩在线观看视频黄| 日日日夜夜操| 毛片电影网| 精品视频一区二区三区| 国产精品免费久久| 黄视频网站在线免费观看| 久久久成人网| 国产不卡在线播放| 国产精品免费精品自在线观看| 九九精品久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产精品自拍在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | a级毛片免费全部播放| 四虎影视久久久| 九九久久国产精品大片| 精品视频在线看| 日韩在线观看免费| 午夜精品国产自在现线拍| 亚洲www美色| 欧美另类videosbestsex高清| 亚洲天堂一区二区三区四区| 日本免费看视频| 国产a毛片| 欧美1区| 青青青草影院 | 国产一区二区高清视频| 欧美激情一区二区三区在线| 欧美大片a一级毛片视频| 久久精品道一区二区三区| 国产成人精品影视| 日本在线不卡视频| 天天色成人| 麻豆网站在线免费观看| 欧美激情在线精品video| 99久久精品国产片| 国产一区免费在线观看| 天天做日日爱| 免费一级片在线观看| 日日日夜夜操| 你懂的国产精品| 亚洲精品中文一区不卡| 国产成人啪精品| 国产美女在线一区二区三区| 国产国语在线播放视频| 青青久久国产成人免费网站| 国产极品白嫩美女在线观看看| 四虎影视库国产精品一区| 国产一区二区精品在线观看| 日韩av东京社区男人的天堂| 韩国毛片免费大片| 麻豆系列 在线视频| 国产美女在线观看| 在线观看导航| 超级乱淫伦动漫| 欧美激情伊人| 日韩在线观看视频免费| 国产一区二区高清视频| 一级片片| 成人高清视频免费观看| 成人免费观看的视频黄页| 精品视频一区二区三区免费| 毛片高清| 青青青草视频在线观看| 欧美一级视频免费| 久久99欧美| 国产成人精品影视| 日韩一级黄色片| 欧美激情一区二区三区在线 | 精品国产一区二区三区精东影业 | 中文字幕Aⅴ资源网| 成人高清护士在线播放| 日韩中文字幕一区二区不卡| 日本在线www| 国产成人啪精品| 国产高清在线精品一区二区| 国产成人欧美一区二区三区的| 国产91精品一区二区| 可以免费看污视频的网站| 麻豆系列国产剧在线观看| 国产一区二区精品久久91| 精品视频在线观看一区二区 | 亚洲女人国产香蕉久久精品| 国产视频一区在线| 中文字幕一区二区三区 精品| 韩国三级视频网站| 99久久精品国产片| 国产成人精品在线| 91麻豆精品国产综合久久久| 高清一级毛片一本到免费观看| 成人a大片在线观看| 精品视频在线看| 可以在线看黄的网站| 国产伦精品一区二区三区在线观看| 九九久久99综合一区二区|