東莞seo網(wǎng)站推廣個人怎么做免費百度推廣
目標
更快的構建速度
更小的 Docker 鏡像大小
更少的 Docker 鏡像層
充分利用鏡像緩存
增加 Dockerfile 可讀性
讓 Docker 容器使用起來更簡單
總結
編寫 .dockerignore 文件
容器只運行單個應用
將多個 RUN 指令合并為一個
基礎鏡像的標簽不要用 latest
每個 RUN 指令后刪除多余文件
選擇合適的基礎鏡像(alpine 版本最好)
設置 WORKDIR 和 CMD
使用 ENTRYPOINT (可選)
在 entrypoint 腳本中使用 exec
COPY 與 ADD 優(yōu)先使用前者
合理調整 COPY 與 RUN 的順序
設置默認的環(huán)境變量,映射端口和數(shù)據(jù)卷
使用 LABEL 設置鏡像元數(shù)據(jù)
添加 HEALTHCHECK
多階段構建
示例
示例 Dockerfile 犯了幾乎所有的錯(當然我是故意的)。接下來,我會一步步優(yōu)化它。假設我們需要使用 Docker 運行一個 Node.js 應用,下面就是它的 Dockerfile(CMD 指令太復雜了,所以我簡化了,它是錯誤的,僅供參考)。
<