2023年7月25日 星期二

Docker Build 時,出現“Sending build context to Docker daemon 過大”

 如題,在啟動 Docker Container 時出現 Sending build context to Docker daemon 的檔案過大,例如:

$ docker build -t my-war /home/workspace/my-war
Sending build context to Docker daemon  15.14GB
Step 1/8 : FROM tomcat:8.5.15-jre8
 ---> b8dfe9ade316
Step 2/8 : RUN rm -rf $CATALINA_HOME/webapps/ROOT
 ---> Using cache
 ---> e4a4d6901da0

……下略



經查詢,這是因為 Docker 在布署時,會把資料夾(上例就是指/home/workspace/my-war)都複製到「容器」中。

假設該資料夾有 log 之類的檔案,零零總總加起來,就會讓整個容器過大。

要解決這問題,最簡單就是刪除多於檔案。

不然,可以追加 .dockerignore 檔來處理

例如我可以建立 /home/workspace/my-war/.dockerignore

# 忽略 logs 中所有檔案
/logs
# 忽略 git 
**/.git

路徑的規則是採用 golang 的 filepath.Match

參考資料

(N.d). Dockerfile reference. Docker Documentation. https://docs.docker.com/engine/reference/builder/#dockerignore-file

Orozco, T. (2014, October 28). Re: build context for docker image very large. Stack Overflow. https://stackoverflow.com/a/26604307/1618596

司徒. (N.d). 為何"Sending build context to Docker daemon"會送很大的檔案. 司徒的教學網站. https://steward-fu.github.io/website/system/docker/fix_sending.htm

沒有留言:

張貼留言