From 053eea3f8b15988fae14fd89723223fd1c1bb022 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Mon, 29 Jun 2026 23:22:07 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=96=B0=E5=A2=9E=20.dockerignore=20?= =?UTF-8?q?=E5=A4=A7=E5=B9=85=E7=BC=A9=E5=87=8F=20Docker=20=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E4=B8=8A=E4=B8=8B=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit backend 与 caddy 构建均缺少 .dockerignore,导致每次构建传输数 GB 无用数据 (backend/tmp 上传文件 980M、frontend/node_modules 520M、.git、backups 等), 卡在 transferring context 阶段。 - backend/.dockerignore:排除 tmp/data/bin/logs/api/.env/docs 等,上下文降到几 MB - 根 .dockerignore(caddy 构建用,context 为仓库根):排除 backend 运行时产物、 frontend/node_modules、.git、backups 等 附带收益:原 COPY . 会把 .env(含密钥)打进镜像,现已一并排除。 已确认无 //go:embed 依赖被排除目录,不影响编译。 Co-Authored-By: Claude Opus 4.8 (1M context) --- .dockerignore | 34 ++++++++++++++++++++++++++++++++++ backend/.dockerignore | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 .dockerignore create mode 100644 backend/.dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..46bf717 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,34 @@ +# caddy 构建上下文是整个仓库根,但 Dockerfile 只需要 frontend/ 源码。 +# 排除所有运行时产物与无关目录,避免把数 GB 数据传进构建上下文。 + +# 后端运行时产物与二进制(caddy 构建完全用不到 backend) +backend/tmp/ +backend/data/ +backend/bin/ +backend/api +backend/logs/ +backend/.git-cache/ + +# 前端依赖与产物(镜像内会重新 npm install / build) +frontend/node_modules/ +frontend/dist/ +frontend/.cache/ + +# 版本库与备份 +.git/ +.git-cache/ +backups/ +.idea/ +.snow/ +.claude/ + +# 密钥与环境文件 +**/.env +**/.env.* + +# 文档 +docs/ +**/*.md + +# 杂项 +**/.DS_Store diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..d535f5a --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,32 @@ +# 构建只需要 Go 源码(cmd / internal / pkg / migrations / go.mod / go.sum) +# 以下均为运行时产物、二进制、密钥与文档,排除后可把构建上下文从 ~1GB 降到几 MB + +# 运行时上传文件与临时目录(最大头,~980MB) +tmp/ +data/ + +# 编译产物 +bin/ +api +*.exe + +# 日志 +logs/ +*.log + +# 本地缓存 +.git-cache/ + +# 密钥与环境文件(避免打进构建上下文) +.env +.env.* + +# 文档与脚本(构建不需要) +docs/ +scripts/ +*.md + +# 其它 +.DS_Store +Dockerfile +.dockerignore