国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

從零搭建Docker流水線:我踩過的三個坑

0
分享至

最近完成了一套Docker與DevSecOps的動手實驗,想把完整過程寫下來——包括那些搞砸的部分,因為真正的學(xué)習(xí)往往發(fā)生在報錯之后。

最終成果包括:從拉取公共鏡像到構(gòu)建自定義應(yīng)用,再到集成安全掃描和自動化部署的完整流水線。本文按實際步驟復(fù)盤,穿插三個具體問題及解決方法。如果你打算復(fù)現(xiàn),應(yīng)該能省些時間。


開始前需要準(zhǔn)備:Docker Desktop或本地Docker環(huán)境、Docker Hub賬號、GitHub賬號。還需要一個Docker Hub個人訪問令牌(不是密碼),在hub.docker.com的賬戶設(shè)置-安全-新建訪問令牌生成,賦予讀寫權(quán)限,立即復(fù)制保存——它只顯示一次。

第一階段:作為消費者

先不構(gòu)建任何東西,而是拉取公共鏡像、運行并觀察。執(zhí)行docker pull nginx:alpine獲取輕量級Nginx鏡像,用docker run -d -p 8080:80 --name my-nginx nginx:alpine以分離模式運行,將容器80端口映射到主機8080端口。docker ps查看運行狀態(tài),docker logs my-nginx查看日志,最后用docker rm -f my-nginx清理。

瀏覽器打開localhost:8080能看到Nginx歡迎頁。這個過程的本質(zhì)是:從Docker Hub下載預(yù)構(gòu)建的文件系統(tǒng)(鏡像),Docker據(jù)此啟動隔離進程(容器)。-p 8080:80讓容器內(nèi)端口可被外部訪問,這是后續(xù)所有操作的基礎(chǔ)。

第二階段:成為構(gòu)建者

現(xiàn)在構(gòu)建Python Flask應(yīng)用。項目結(jié)構(gòu)包含app.py、templates/index.html、requirements.txt、Dockerfile和.dockerignore。app.py是極簡Flask應(yīng)用,有首頁和/health健康檢查端點,APP_NODE變量從環(huán)境讀取——這實現(xiàn)了配置與代碼分離,運行時注入標(biāo)識符無需重建鏡像。

templates/index.html提供前端界面,requirements.txt列出flask依賴。Dockerfile采用多階段構(gòu)建:先用python:3.9-slim作為基礎(chǔ)鏡像,設(shè)置工作目錄,復(fù)制依賴文件并安裝,再復(fù)制應(yīng)用代碼,暴露5000端口,最后定義啟動命令。.dockerignore排除__pycache__等文件減小鏡像體積。

構(gòu)建命令docker build -t yourusername/flask-app:v1 . 會逐層執(zhí)行Dockerfile指令,生成帶標(biāo)簽的本地鏡像。推送前需docker login,然后docker push yourusername/flask-app:v1上傳到Docker Hub,他人即可拉取使用。

第三階段:安全掃描

鏡像上傳后需要安全檢查。Docker Hub本身提供基礎(chǔ)掃描,但實驗要求集成Trivy——一個開源漏洞掃描器。安裝后執(zhí)行trivy image yourusername/flask-app:v1,它會比對漏洞數(shù)據(jù)庫,輸出按嚴(yán)重程度分級的結(jié)果。

我遇到的第一個坑:Trivy初次運行下載數(shù)據(jù)庫極慢,且超時失敗。解決方式是配置鏡像源加速,或先執(zhí)行trivy image --download-db-only單獨下載數(shù)據(jù)庫。第二個坑:掃描報告里大量"誤報",比如某些CVE在Alpine Linux實際已修復(fù)但數(shù)據(jù)庫未更新。需要結(jié)合docker scout或人工判斷,不能全信掃描結(jié)果。

第四階段:自動化流水線

用GitHub Actions實現(xiàn)推送代碼即構(gòu)建部署。工作流文件放在.github/workflows/docker.yml,觸發(fā)條件設(shè)為push到main分支。步驟包括:檢出代碼、登錄Docker Hub、構(gòu)建并推送鏡像、運行Trivy掃描、掃描失敗時阻止部署。

第三個坑來了:GitHub Actions的默認(rèn)Ubuntu運行器沒有Docker Buildx,多平臺構(gòu)建報錯。需在步驟中顯式設(shè)置docker/setup-buildx-action@v2。另一個隱蔽問題是secrets.DOCKER_TOKEN在fork的PR中不可用,導(dǎo)致外部貢獻(xiàn)者構(gòu)建失敗——這是安全設(shè)計,但文檔很少提及。

最終工作流跑通后,每次git push自動完成構(gòu)建-掃描-推送全流程。失敗時GitHub會發(fā)郵件,掃描報告作為構(gòu)建產(chǎn)物可下載審計。

復(fù)盤

這套流水線最耗時的不是寫配置,而是調(diào)通憑證和權(quán)限。Docker Hub令牌、GitHub Secrets、Trivy數(shù)據(jù)庫,三個外部依賴各卡了一次。文檔往往假設(shè)讀者已熟悉這些生態(tài),但新手連錯誤信息都搜不到對應(yīng)方案。建議遇到報錯先檢查版本——Trivy 0.48和0.50的數(shù)據(jù)庫格式不兼容,這是隱性坑點。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點推薦
“4只皮皮蝦1035元”當(dāng)事人否認(rèn)想吃白食,刪除評論;隔壁海鮮店發(fā)聲

“4只皮皮蝦1035元”當(dāng)事人否認(rèn)想吃白食,刪除評論;隔壁海鮮店發(fā)聲

上觀新聞
2026-05-09 09:58:08
141:0壓倒性優(yōu)勢,歐盟成員國通過重大草案,中國外交部:贊賞

141:0壓倒性優(yōu)勢,歐盟成員國通過重大草案,中國外交部:贊賞

書紀(jì)文譚
2026-05-08 15:05:30
深圳6歲男童吃生菜包烤肉后,全身出現(xiàn)大片青斑、血腫

深圳6歲男童吃生菜包烤肉后,全身出現(xiàn)大片青斑、血腫

聽心堂
2026-05-09 18:11:29
央視拒付天價轉(zhuǎn)播費僅48小時,難堪的一幕發(fā)生,鄭欽文也被拉下水

央視拒付天價轉(zhuǎn)播費僅48小時,難堪的一幕發(fā)生,鄭欽文也被拉下水

林子說事
2026-05-10 04:35:02
外賣小哥冒死沖進火場救火 被物業(yè)收取50元“滅火器使用費”

外賣小哥冒死沖進火場救火 被物業(yè)收取50元“滅火器使用費”

閃電新聞
2026-05-09 09:31:06
一個人、一臺電腦、4個產(chǎn)品,月入170萬

一個人、一臺電腦、4個產(chǎn)品,月入170萬

盛景產(chǎn)業(yè)互聯(lián)網(wǎng)觀察
2026-05-09 12:06:44
“4只皮皮蝦1035元”門店停業(yè),標(biāo)價牌撤下椅子堆疊,店內(nèi)監(jiān)控提交相關(guān)部門,店主病逝后家屬已回老家;三亞將發(fā)布詳細(xì)調(diào)查報告

“4只皮皮蝦1035元”門店停業(yè),標(biāo)價牌撤下椅子堆疊,店內(nèi)監(jiān)控提交相關(guān)部門,店主病逝后家屬已回老家;三亞將發(fā)布詳細(xì)調(diào)查報告

大象新聞
2026-05-09 14:46:04
得了文班亞馬還不知足,還惦記文班亞昕,馬刺管理層我勸你善良

得了文班亞馬還不知足,還惦記文班亞昕,馬刺管理層我勸你善良

兵哥籃球故事
2026-05-09 22:18:27
“我們絕不向朋友的船開火” 伊朗駐華大使表態(tài)

“我們絕不向朋友的船開火” 伊朗駐華大使表態(tài)

看看新聞Knews
2026-05-09 23:24:04
3-0!多庫2場3球,哈蘭德傳射建功,曼城拒絕爆冷,靜候槍手犯錯

3-0!多庫2場3球,哈蘭德傳射建功,曼城拒絕爆冷,靜候槍手犯錯

我的護球最獨特
2026-05-10 02:30:18
1-2大爆冷!薩巴倫卡轟然出局 WTA亂了:一夜3大冷門,鄭欽文可惜

1-2大爆冷!薩巴倫卡轟然出局 WTA亂了:一夜3大冷門,鄭欽文可惜

大秦壁虎白話體育
2026-05-10 00:53:05
滴滴司機講述東北蕭條:一家三口一年掙兩三萬,很多老人翻垃圾桶

滴滴司機講述東北蕭條:一家三口一年掙兩三萬,很多老人翻垃圾桶

互聯(lián)網(wǎng)大觀
2026-05-09 13:07:25
4戰(zhàn)國乒吞0-12!法國男團放話:中國隊已不可怕 我們將首次贏他們

4戰(zhàn)國乒吞0-12!法國男團放話:中國隊已不可怕 我們將首次贏他們

風(fēng)過鄉(xiāng)
2026-05-09 17:29:03
DeepSeek和阿里談崩?市場人士回應(yīng);8車企辟謠“被約談”名單;SK海力士回應(yīng)員工人均獎金610萬元;百度發(fā)布新模型丨每經(jīng)早參

DeepSeek和阿里談崩?市場人士回應(yīng);8車企辟謠“被約談”名單;SK海力士回應(yīng)員工人均獎金610萬元;百度發(fā)布新模型丨每經(jīng)早參

每日經(jīng)濟新聞
2026-05-10 06:55:07
國安部發(fā)布緊急提醒:你的手機或已成“間諜站”!

國安部發(fā)布緊急提醒:你的手機或已成“間諜站”!

看看新聞Knews
2026-05-09 14:54:03
是離譜還是荒誕,國家反詐APP里的個人信息也能被販賣

是離譜還是荒誕,國家反詐APP里的個人信息也能被販賣

林中木白
2026-05-09 20:30:32
“你要收費我就卸載”,全網(wǎng)最離不開的AI不裝了,口碑大反轉(zhuǎn)

“你要收費我就卸載”,全網(wǎng)最離不開的AI不裝了,口碑大反轉(zhuǎn)

果殼
2026-05-09 12:33:57
活活嚇?biāo)!網(wǎng)傳69歲老人查出肺癌晚期,老伴告知真相后三日便離世

活活嚇?biāo)!網(wǎng)傳69歲老人查出肺癌晚期,老伴告知真相后三日便離世

火山詩話
2026-05-09 21:45:51
一個網(wǎng)友說,大集體時期按月發(fā)糧,評論區(qū)炸鍋了

一個網(wǎng)友說,大集體時期按月發(fā)糧,評論區(qū)炸鍋了

讀鬼筆記
2026-05-09 20:34:04
上海綠捷,串標(biāo)行為情節(jié)特別嚴(yán)重!涉金額約3.23億元、9.6萬多名中小學(xué)生餐食供應(yīng)

上海綠捷,串標(biāo)行為情節(jié)特別嚴(yán)重!涉金額約3.23億元、9.6萬多名中小學(xué)生餐食供應(yīng)

野渡商業(yè)評論
2026-05-09 18:23:36
2026-05-10 09:03:00
我是一個養(yǎng)蝦人
我是一個養(yǎng)蝦人
有態(tài)度網(wǎng)友ytd
2375文章數(shù) 28關(guān)注度
往期回顧 全部

科技要聞

美國政府強力下場 蘋果英特爾達(dá)成代工協(xié)議

頭條要聞

美軍對伊朗多個目標(biāo)發(fā)動打擊 伊朗革命衛(wèi)隊深夜警告

頭條要聞

美軍對伊朗多個目標(biāo)發(fā)動打擊 伊朗革命衛(wèi)隊深夜警告

體育要聞

成立128年后,這支升班馬首奪頂級聯(lián)賽冠軍

娛樂要聞

50歲趙薇臉頰凹陷滄桑得認(rèn)不出!

財經(jīng)要聞

多地號召,公職人員帶頭繳納物業(yè)費

汽車要聞

軸距加長/智駕拉滿 阿維塔07L定位大五座SUV

態(tài)度原創(chuàng)

教育
時尚
數(shù)碼
旅游
手機

教育要聞

26高考選專業(yè),普通家庭該避開哪些坑?

越減越胖的人 ,被“0糖0脂”做局了

數(shù)碼要聞

TCL華星t8項目提前封頂 印刷OLED規(guī)模化量產(chǎn)提速

旅游要聞

早安!花開好市火熱進行,周末來赴一場花漾約會吧

手機要聞

iQOO 15T首發(fā)天璣9500特別版:實測幀率無敵 穩(wěn)如泰山

無障礙瀏覽 進入關(guān)懷版