来源核对 2026-09-10
离线 HTML · 不执行命令

综合实验:容器化学习笔记站

这是一个零编程依赖的静态 Nginx 项目,用来串联 Linux、Git、Docker Compose 和 Codex。

项目结构

概念图 / 文本
notes-site/
├─ AGENTS.md
├─ Dockerfile
├─ compose.yaml
├─ .dockerignore
├─ verify.sh
└─ site/
   ├─ index.html
   └─ styles.css

复制到 WSL 主目录

当前教材工作区位于 Windows D 盘时,在 Ubuntu Bash:

Ubuntu Bash
mkdir -p ~/projects
cp -a /mnt/d/path/to/LearningLinux/labs/notes-site \
  ~/projects/linux-learning-notes
cd ~/projects/linux-learning-notes
pwd

如果教材来自 Git 仓库,也可以直接在 ~/projects 下 clone。确认最终路径不是 /mnt/c 或 /mnt/d。

静态验证

Ubuntu Bash
chmod u+x verify.sh
./verify.sh
docker compose config

这一步不会启动容器。docker compose config 成功只表示 YAML 能解析。

真实运行(会修改 Docker 外部状态)

确认你愿意创建镜像和容器后:

Ubuntu Bash
docker compose build
docker compose up -d
docker compose ps
curl --fail http://localhost:8080/
./verify.sh --running
docker compose logs --tail 100

浏览器打开 http://localhost:8080。完成后:

Ubuntu Bash
docker compose down

down 删除本项目容器和默认网络,但保留已构建镜像。不要运行全局 prune。

Git 练习

Ubuntu Bash
git init
git add .
git diff --staged
git commit -m "feat: add containerized learning notes"

修改页面后先 git diff,再重新构建、启动和验证。

Codex 练习

把以下内容放入 Codex 输入框:

Codex 输入框
先只读检查这个项目,并解释 Dockerfile、compose.yaml 和 verify.sh 的数据流。
不要修改文件,不要安装软件,不要运行 Docker。
列出你认为的三个验收步骤,并说明每一步能证明什么、不能证明什么。

确认解释正确后,再给一个有范围的修改任务:

Codex 输入框
只修改 site/index.html 和 site/styles.css,新增一张“下一步”卡片。
保持中文、UTF-8、现有视觉风格和 8080 端口,不新增依赖。
修改后运行 ./verify.sh,并展示 git diff;不要启动 Docker。

成功标准

  • ./verify.sh 输出 static_status=ok;
  • Compose 服务名为 web,主机端口为 8080;
  • docker compose ps 最终显示 healthy;
  • HTTP 返回成功且页面包含“Linux 学习笔记”;
  • git diff 中只有你预期的文件;
  • docker compose down 后项目容器不再运行。