国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

為什么你的Docker鏡像比我的大一倍?這五個致命差異是關鍵……

云計算 云原生
在本文中,我將展示?5 個真實可用的 Dockerfile 技巧——資深開發者每天都在用的技巧,這些技巧能節省時間、減少膨脹,并讓容器更適合生產環境。

我還記得,有一次一個初級開發者對比了我們為同一個 Node.js 應用構建的 Docker 鏡像后,這樣問我。

我們用了相同的基礎鏡像、相同的依賴、相同的應用。但我的構建結果更輕、更快、也更容易調試。

“秘訣是什么?”

沒有魔法。

只有經驗。

在本文中,我將展示 5 個真實可用的 Dockerfile 技巧——資深開發者每天都在用的技巧,這些技巧能節省時間、減少膨脹,并讓容器更適合生產環境。

每一條都會詳細解釋,并附帶真實可運行的示例。

技巧 1:最小化層(Minimize Layers)

假設你要在基于 Debian 的鏡像里安裝一些工具:

# Junior way
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get clean

每條 RUN 指令都會新建一個鏡像層。這不僅讓鏡像變大,還會拖慢構建速度和緩存利用率。

資深開發者會這樣寫:

# Senior way
RUN apt-get update && \
    apt-get install -y curl && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

為什么重要:

  • 把命令合并到一條 RUN 里,能減少層數。
  • rm -rf /var/lib/apt/lists/* 會清除臨時包元數據——省下幾 MB。
  • && 保證只要有一條命令失敗,構建會立刻停止,避免留下不完整狀態。

動手試試:

  • 分別用兩種寫法執行 docker build,再 docker images 對比大小。
  • 你會發現資深版本明顯更小、更干凈。

技巧 2:使用 .dockerignore

你不會把 .git 文件夾上傳到生產環境——那為什么要把它放進 Docker 構建上下文?

默認情況下,所有文件都會被送進 Docker 守護進程,除非你顯式忽略。

問題所在:

# Without .dockerignore
COPY . .

如果本地目錄里有:

  • node_modules/
  • .git/
  • logs/
  • test data…

它們全都會被復制進去——既拖慢構建,又撐爆鏡像。

解決辦法:

在項目根目錄新建一個名為 .dockerignore 的文件:

node_modules
.git
*.log
Dockerfile

現在只有相關文件會被打包。

高級提示:

執行下面這條命令,看看究竟哪些文件被送進了 Docker:

docker build . --no-cache --progress=plain

你會震驚于沒有 .dockerignore 時有多少“垃圾”被復制進去。

技巧 3:多階段構建,打造干凈的生產鏡像

這是 Docker 最強大、卻常被初級開發者忽略的功能之一。

場景:

  • 你在構建 React 應用。
  • 你需要 node 來構建,但運行時并不需要它。

初級 Dockerfile:

FROM node:18
WORKDIR /app
COPY . .
RUN npm install && npm run build
CMD ["npx", "serve", "build"]

最終鏡像里殘留了所有構建工具——無謂的膨脹。

資深 Dockerfile(多階段):

# Stage 1: Builder
FROM node:18 as builder
WORKDIR /app
COPY . .
RUN npm install && npm run build


# Stage 2: Production
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

好處:

  • 最終鏡像體積極小。
  • 沒有 node_modules、沒有源碼、沒有構建工具。
  • 更安全、更快速。

多階段構建尤其適用于:

  • 前端應用
  • Java 應用(Maven/Gradle 構建)
  • Go 應用(靜態二進制輸出)

構建并運行:

docker build -t myapp .
docker run -p 80:80 myapp

你的應用將由 nginx 提供,全程看不到 node。

技巧 4:鎖定鏡像版本(Pin Image Versions)

這一點常常導致生產環境噩夢。

危險寫法:

FROM python:latest

今天能跑,可明天 latest 更新后呢?

構建可能失敗,應用可能崩潰。

穩妥寫法:

FROM python:3.11.6-slim

務必鎖定到:

  • 具體版本號
  • 盡可能用精簡變體(slim、alpine)

為什么重要:

docker pull python:latest
docker pull python:3.11.6-slim

對比體積——再想想 CI/CD 時的可靠性。

注意:

別盲目給所有語言都用 alpine——某些庫因 musl 兼容性問題會編譯失敗。務必先測試。

技巧 5:用 HEALTHCHECK 給容器加上自愈能力

資深工程師的標志之一,就是讓系統能在故障時自動恢復。

Docker 的 HEALTHCHECK 正好能做到。

初級開發者常忽略:

大多數初級 Dockerfile 只是簡單啟動應用:

CMD ["node", "server.js"]

可一旦容器跑起來,就沒人知道應用是否還活著。

  • 應用假死怎么辦?
  • 拋出異常但進程沒退怎么辦?
  • 啟動成功,幾分鐘后又崩了怎么辦?

Docker 會愉快地顯示容器“運行中”,即使里面的應用已經壞了。

資深 Dockerfile:

資深開發者會定義 HEALTHCHECK,定期檢查應用是否仍然正常。

HEALTHCHECK --interval=30s --timeout=10s \
  CMD curl -f http://localhost:8080/health || exit 1

每 30 秒執行一次 curl:

  • 返回 200 → Docker 認為容器健康。
  • 失敗 → Docker 標記為不健康。

參數拆解:

  • --interval=30s:每 30 秒檢查一次。
  • --timeout=10s:超過 10 秒沒響應就判失敗。
  • --start-period=10s:給應用 10 秒啟動時間,期間不計入失敗。
  • --retries=3:連續 3 次失敗才標記為不健康。
  • CMD:真正的健康檢查命令——這里訪問 /health。

實際項目中的價值:

  • 開發階段:及早發現啟動時的問題。
  • 預發/生產:Docker Swarm、Kubernetes、ECS 會自動重啟被標為不健康的容器。
  • CI/CD:在運行測試或發布前,更有信心容器真的啟動成功了。

如果應用沒有 /health 接口,也可以用其他方式:

  • 檢查某個文件是否存在
  • 看端口有沒有監聽
  • 甚至測數據庫連不連得通

附加小技巧:進程級健康檢查

如果你的應用沒 HTTP 接口——比如 CLI 工具、TCP 服務、后臺worker——照樣能用 HEALTHCHECK,只要盯著進程在不在。

可以嘗試:

HEALTHCHECK --interval=30s --timeout=10s \
  CMD pgrep myserver || exit 1

pgrep myserver 查找名為 myserver 的進程。

找到 → 退出碼 0,容器健康。

找不到 → 非 0,容器不健康。

適用于:

  • 非 HTTP 服務
  • 純二進制或腳本
  • 遺留守護進程

真實示例:

Java 應用這樣啟動:

CMD ["java", "-jar", "myapp.jar"]

健康檢查可寫成:

HEALTHCHECK CMD pgrep java || exit 1

簡單有效,確保主進程沒悄悄崩潰。

最后的話

這些 Dockerfile 技巧不是什么高深火箭科學,而是讓容器更快、更小、更安全的實用習慣。

快速回顧:

  • 合并 RUN 命令,減少鏡像層。
  • 用 .dockerignore 提速構建。
  • 多階段構建,生成精簡生產鏡像。
  • 鎖定版本,避免未來驚嚇。
  • 加入 HEALTHCHECK,實現監控與自愈。

下次用 Docker 時,挑一兩招試試——看看你的配置能干凈多少。

作者丨Ujjawal Rohra    編譯丨Rio

來源丨網址:https://medium.com/@ujjawalr/5-dockerfile-tricks-that-separate-senior-developers-from-juniors-bcd9846d8b7f


責任編輯:武曉燕 來源: dbaplus社群
相關推薦

2021-12-01 10:17:22

物聯網安全憑證漏洞

2015-11-06 09:41:03

圖標可視化

2015-10-08 09:28:47

JavaDocker鏡像

2017-11-01 21:33:40

python

2023-06-05 17:15:39

ZOMBIES軟件

2020-06-18 07:16:22

聯網車隊物聯網IOT

2015-08-04 09:24:50

2024-04-02 10:13:25

在線小工具開發

2023-01-10 12:38:08

戴爾

2015-05-13 13:59:02

碼農拒絕

2015-05-15 09:56:26

程序員代碼

2021-05-10 11:40:51

函數NumpyPython

2019-03-14 10:34:35

設計UI設計師產品

2015-05-11 18:13:45

跳槽專用

2011-08-10 09:07:30

2021-10-27 11:49:09

勒索軟件惡意軟件安全

2023-07-12 11:14:36

智能建筑數據建模

2016-09-23 16:09:01

2021-06-10 07:59:40

Linux 系統硬件操作系統

2020-09-09 16:20:16

區塊鏈比特幣數字貨幣
點贊
收藏

51CTO技術棧公眾號

亚洲精品精选| 欧美交a欧美精品喷水| 亚洲欧美激情插| 性色av一区二区三区红粉影视| 亚州国产精品久久久| 国产精品国产三级欧美二区| 黄色高清在线观看| 国产一区二区在线网站| 成人性生生活性生交12| 欧美区一区二区| 国产精品久久久久久一区二区三区| 91福利区一区二区三区| 久久99精品久久久久久青青91| 蜜桃视频免费网站| 狠狠躁夜夜躁久久躁别揉| 毛片精品免费在线观看| 欧美最猛性xxxxx免费| 亚洲国产精品影视| 欧美午夜影院| 国产精品国产自产拍高清av水多| 英国三级经典在线观看| 亚洲色图都市小说| 潘金莲一级淫片aaaaa免费看| 一本色道久久精品| 日韩三级电影免费观看| 欧美影院一区| 免费一区二区三区在在线视频| 伊人成人在线视频| 国产精品视频一区二区高潮| 天天综合精品| 久久久久久久久久久网站| 日韩欧美一区二区三区免费观看| 日韩精品视频在线| 欧美男女视频| 欧美激情精品在线| 欧美风情在线视频| 91高清在线免费观看| 91大神在线观看线路一区| 日韩电影网在线| 欧美综合影院| 97免费视频在线| 中国av一区| 国产精品亚洲美女av网站| 亚洲欧洲中文字幕| 99三级在线| 国产麻豆午夜三级精品| 冲田杏梨av在线| 亚洲欧美综合网| av在线第一页| 欧美精品在线免费观看| 日韩中文欧美| 超薄肉色丝袜足j调教99| 中文字幕中文在线不卡住| 国内福利写真片视频在线| 欧美一级二级在线观看| 成人国产一区| 亚洲精品日韩av| 国产一区二区不卡在线| 中文字幕在线二区| 中文字幕在线看视频国产欧美| 国内精品视频| 中文视频一区视频二区视频三区| 亚洲精品久久久蜜桃| 伊人色综合一区二区三区影院视频| 久久久久女教师免费一区| 一区二区影视| 国产黄色特级片| 日韩精品在线观看一区| 亚洲无线视频| 黄色资源在线看| 亚洲精品国产品国语在线| 香蕉久久夜色精品国产更新时间| 91在线直播亚洲| 91视频国产资源| 神马久久午夜| 99电影在线观看| 国产成人精品亚洲午夜麻豆| h网站在线免费观看| 国产综合香蕉五月婷在线| 成人久久久精品乱码一区二区三区| 中文字幕在线网| 日韩av电影中文字幕| 北岛玲一区二区三区四区| 黑人巨大精品欧美一区二区桃花岛| 国产v亚洲v天堂无码| 亚洲视频网站在线观看| 国产精品186在线观看在线播放| 亚洲免费伊人电影| 日日噜噜噜噜夜夜爽亚洲精品| 蜜桃免费网站一区二区三区| 99re视频在线| 久久性感美女视频| 国产欧美久久一区二区| 亚洲情侣在线| 欧美久久久久久久久中文字幕| 久草成色在线| 欧美日韩三级一区二区| 成人羞羞视频播放网站| 99不卡视频| 97精品国产91久久久久久| 精品一区二区免费| 蜜桃视频在线观看免费视频网站www| 91精品黄色| 717成人午夜免费福利电影| 国产一区二区三区久久久久久久久| 天天综合狠狠精品| 亚洲精品福利在线| 国产精品一品二品| 国产精品99久久免费观看| 激情六月婷婷| 亚洲综合自拍一区| 91.麻豆视频| 蜜臀精品一区二区三区在线观看| 都市激情亚洲综合| 香蕉视频免费版| 久久国产色av| 精品日本高清在线播放 | 亚洲va在线va天堂| 久久精品国产99国产| 韩国女主播一区二区三区| 国内精品久久久久国产| 成人蜜桃视频网站网址| 91精品国产色综合久久不卡98| 亚洲在线观看免费视频| 亚洲中字黄色| 国产成人1区| 久久夜夜操妹子| 137大胆人体在线观看| 日韩精品一区在线视频| 538国产精品一区二区在线| 亚洲精品美女免费| 色8久久精品久久久久久蜜| 精品亚洲成a人| 91精品亚洲| 亚洲激情播播| 成人激情综合| 高清中文字幕在线| 欧美在线观看成人| 国产一区二区不卡视频在线观看| 久久久久国产视频| 国产一区二区三区在线免费观看| 久久综合五月婷婷| 国产四区在线观看| 日韩精品在线免费播放| 蜜桃av一区二区在线观看| 日本中文视频| 国产日韩欧美日韩| 成人激情黄色小说| 一区二区久久| 亚洲第一黄网| 欧美成人综合| 亚洲桃色综合影院| 电影一区二区三区久久免费观看| 黄色综合网址| xxxx成人| 成人性生活av| 91麻豆精品国产91久久久更新资源速度超快| 久久精品免费一区二区| 亚洲在线不卡| 亚洲一区精彩视频| 欧美,日韩,国产在线| 强伦女教师2:伦理在线观看| 成人毛片100部免费看| 日本一区免费在线观看| 特级西西人体www高清大胆| 成人h猎奇视频网站| 国产一区二区不卡视频在线观看| 欧美三级电影在线播放| 久久99中文字幕| 情趣视频网站在线免费观看| 在线视频网站| av免费在线视| 2020最新国产精品| 少妇精品久久久| 日本视频中文字幕一区二区三区| 成人av手机在线观看| 国产91精品在线观看| 久久久777精品电影网影网| 欧美性少妇18aaaa视频| 色综合欧美在线视频区| 亚洲色无码播放| 日韩免费观看高清| 色女孩综合网| 亚洲pron| 日本精品在线播放 | 国产精品羞羞答答在线观看| 日本不卡免费一区| 精品影院一区二区久久久| 中文字幕亚洲综合久久菠萝蜜| 91精品国产91久久久久久一区二区| 日韩国产高清视频在线| 成人av资源在线播放| 男人的天堂日韩| 国产一区二区精品调教| 在线日韩一区| 91麻豆免费看| 亚洲美女视频网站| 亚洲精品久久区二区三区蜜桃臀 | 久久亚洲成人| 亚洲免费av观看|