Skip to content
  • 随便什么队's avatar
    fix(docker): Dockerfile 补齐源码 COPY —— docker build 与容器内 make all 首次实测通过 · 17a77760
    随便什么队 authored
    提交材料要求「与本地一致的 Docker 编译环境」,此前 Dockerfile 从未实际构建过。
    本轮在 WSL Ubuntu-22.04 + Docker 29.1.3 上完成首次实构建,并修掉两个必然导致
    容器内构建失败/文档失真的问题。
    
    改动:
    - Dockerfile:改为整树 `COPY . .`。旧版只 COPY 各 `Cargo.toml`、`third_party/`、
      `easy-fs/`,缺根 `Makefile`、`kernel/src/`、`rust-toolchain.toml`,容器内
      `CMD make all` 必然失败(找不到 Makefile 与 src)。
    - Dockerfile:工具链安装改为幂等判断——基镜像已预装两套工具链时跳过联网下载;
      全新 `ubuntu:22.04` 走原安装分支,版本与评测镜像预装名单一致。
    - Dockerfile:新增两个 build-arg。`BASE_IMAGE` 支持指向预装工具链的本地镜像
      (离线/加速构建,产物不变);`RUSTUP_DIST_SERVER`/`RUSTUP_UPDATE_ROOT` 更换
      工具链下载源(国内网络可换镜像,版本与组件不变)。
    - Dockerfile:基线注释更正 `nightly-2024-05-02` → `2024-05-01`(实际值)。
    - 新增 `.dockerignore`:排除 `.git`、各 `target/`、根目录 `kernel-rv`/`kernel-la`/
      `disk.img`、`kernel/.cargo`、`*.log`。目的是让镜像内的构建等价于「干净 clone 后
      构建」:宿主机残留的旧 `kernel-rv` 不会掩盖编译失败(P9),`kernel/.cargo` 也不会
      替 Makefile 完成隐藏目录还原动作(P14)。
    
    实测(真实输出):
      $ docker build -t oskernel2026:v1 .
      Successfully tagged oskernel2026:v1
      $ docker run --rm oskernel2026:v1 make all
      Finished `release` profile [optimized] target(s)      # kernel-rv
      Finished `release` profile [optimized] target(s)      # la-stub
      -rwxr-xr-x 775560 kernel-rv   Read RISC-V ELF64
      -rwxr-xr-x  68320 kernel-la   ELF64 LoongArch, Entry 0x200000
    
    文档同步(把「docker build 未实测」全部更正):
    - README §3.5:命令、已实测结果、`.dockerignore` 的作用、两个 build-arg 的用法
    - README §目录结构 与 §进度表:补 `.dockerignore` 与「Docker 编译环境 ✅」
    - docs/设计文档.md §9.2 差异表、§11.2 交付件表:改为已实测(并更正演示视频/仓库
      可见性的旧状态描述)
    - docs/AI工具使用说明.md §二.3:示例更正;新增 §3.9 记录本次实测的目的、交互、
      AI 首次输出的缺陷、验证结果与环境侧两个坑
    17a77760