Skip to content

fix: 新增 .dockerignore 收紧 build context(性能 + 敏感文件入镜像防护) #103

Description

@DavidHLP

严重度:MEDIUM(构建性能 + 安全)

来源

CR thana 提交。涉及 MEDIUM 9。

问题

项目根 无 `.dockerignore`(已确认 `ls` 报 No such file)。`docker-compose.ci.yml` 三个服务 `build.context: .` → docker build 把整个仓库(`.git`、`wiki/`、`docs/`、`backend-spring/target`、本地 `node_modules`、`.env` 等)发给 daemon 作为 build context:

  • 性能:构建 console 镜像时白传 backend-spring 整个目录
  • 安全:`.env`(含生成凭据)、`infrastructure/`、`tools/` 等可能被 `COPY` 进镜像层(即使当前 Dockerfile 没显式 COPY,`COPY . .` 模式会带入)

build context 必须保留为 `. `(monorepo:console/management Dockerfile 需 `COPY shared`,shared 在项目根),所以靠 `.dockerignore` 收紧,不改 context。

修复

新增项目根 `.dockerignore`,排除:

  • VCS:`.git` / `.github` / `.gitlab`
  • IDE/agent:`.claude` / `.cursor` / `.codex` / `.agents` / `.vscode` / `.idea`
  • 文档:`wiki` / `docs` / `*.md`
  • 构建产物:`/node_modules` / `/dist` / `/target` / `/.vitest` / `/coverage` / `logs` / `/*.log`
  • 本地/运行时:`.env` / `.env.*`(保留 `!.env.example`)/ `infrastructure` / `tools` / `scripts` / `tmp`
  • 部署编排:`docker-compose*.yml` / `ecosystem.config.cjs`
  • 独立镜像:`init-db` / `docker/sandbox`

保留 build 必需:`console/` / `management/` / `shared/` / `backend-spring/`

分支

`fix/docker-build-context`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions