Linux 与 Docker:运行配置、日志和持久化|课后复习

课堂课件 · 课前原始判断 · 本周导学

今天学会了什么

能从模块入口启动自己的商品导入器,验证环境配置、日志和退出码,并在 Linux/Docker 环境核对路径、依赖和持久化。

应用容器、端口与数据库位置

先标出你的数据库实际位于宿主机还是独立容器,再沿图解释浏览器到应用、应用到数据库的地址,不能照抄拓扑中的服务名。

今天讲了什么(对照复习)

下面逐项对应课堂正文。先盖住右边那一栏,凭记忆回答;卡住了再翻回左边同名的小节。光说得出名字不算会,还要能讲清它会做什么、什么时候会失效。

课堂对应章节必须能解释的机制与边界
宿主机、虚拟机、终端、Shell 和进程;第一次登录先收集事实宿主机运行系统,虚拟机提供独立系统环境;终端提供交互,Shell 解析命令,进程执行程序。先记录系统、用户、当前目录和工具版本,连接成功不等于项目成功。
Linux 路径与大小写;权限位只讲项目所需深度;环境变量怎样影响命令路径大小写敏感,工作目录影响相对路径;r/w/x 与所有者、组、其他用户决定访问。PATH 影响命令选择,项目变量影响配置;按实际所需修权限,不用全开放掩盖原因。
为什么不能复制 Windows .venv;根据声明重建依赖;ModuleNotFoundError 怎样定位venv 与平台、解释器绑定;在目标环境创建,再按依赖清单安装。先确认 python 与 pip 是否同环境,再核对安装位置、工作目录和导入路径,不复制旧 .venv 充当重建。
分层排障顺序;日志回答什么从系统/目录到解释器/依赖、配置/端口、应用/数据库逐层定位。日志用 request_id 关联错误,不回显密码、会话令牌或敏感连接串;保留失败与修复后的实际输出。
Docker 解决什么问题;Image、Container、Volume镜像是打包制品,容器是运行实例,Volume 保存需独立于实例的数据。打包运行环境不能自动解决业务事务、外部依赖和数据备份。
Dockerfile 只是构建说明;构建上下文FROM/WORKDIR/COPY/RUN/CMD 描述构建和启动,RUN 在构建时执行,CMD 在运行时执行;先依赖后代码可复用构建缓存。.dockerignore 排除 .env、密钥、.venv、缓存和无关数据。
端口映射;环境变量;应用与 MySQL 的运行关系EXPOSE 不发布端口,进程监听与主机端口映射分别检查。容器 localhost 指向自己;连接宿主机数据库与连接同网络服务名是两种情况。配置运行时注入,真实密码不写镜像和 Git。
healthcheck 应该检查什么;Docker 五段证据;先用最小部署建立运行边界Build、Run、Health、Log、持久化分别取证。running 不等于 healthy,health 不等于订单业务通过;重建只替换应用并保留数据库/卷,前后查询同一订单及库存。

出了问题:怎么发现、怎么修、怎么验证

只在你自己那份课程副本或专用实验数据上复验,把改之前和改之后的真实结果都留下来。

风险/现象提前预防怎样发现怎样处理怎样复验
跨环境导入失败或文件找不到按固定版本重建 venv 并写工作目录核对大小写、sys.executable 与实际依赖修环境/路径,按清单补依赖目标环境能从新终端启动并跑基础测试
权限错误靠全开放掩盖明确执行用户与最小读写需求查看目录、文件权限和运行用户只修所需权限或数据位置应用能操作实验数据,无需扩大无关权限
容器 localhost 或端口配置错分别画监听、映射和数据库地址核对容器日志、连接错误与主机访问修监听地址、映射或宿主机/服务名配置health 和真实订单读取都通
配置或密钥被打包敏感配置运行时注入并设置忽略检查构建上下文和 diff,不输出秘密移出镜像/Git,改安全示例文件重建后按外部配置运行,日志无敏感值
重建丢数据或只看 running先定位数据库与卷,记录同一订单比较重启/替换应用前后订单、金额、库存保留数据存储,只替换应用实例五段证据完整,原订单仍可查

本日新增 Python 知识怎样进入商城

模块/包、name/main、python -m、环境变量、依赖、logging、退出码和进程生命周期;保留 Linux/Docker/持久化。它们共同支持“商城运营工具与订单 API 的可重复启动”。我应能打开 runtime.py 指出每个机制的位置,并重跑 导入模块不执行写入;正常导出;缺配置与同路径拒绝;日志和退出码;重建应用后同订单可查询。

风险提前预防怎样发现怎样处理怎样复验
导入即写入或启动服务业务动作放 main,入口保护只 import 就出现副作用移动顶层动作到入口import 无动作,-m 才执行
输入被截断或配置泄露输入输出分开,日志最小字段同路径失败或日志含连接信息拒绝同路径,删敏感输出原 CSV 哈希不变,日志只含数量/错误类型

闭卷自测

先自己答一遍,再去运行或翻回课堂核对;不确定的地方标出来,别用 AI 的答案顶掉你自己的第一次判断。

  1. 终端、Shell、进程、宿主机和容器分别是什么?如何确认自己现在操作的是哪一层?

  2. Windows 的 .venv 为什么不能直接搬到 Linux?ModuleNotFoundError 应按什么顺序检查?

  3. RUN、CMD、EXPOSE 与端口发布分别发生在什么时候、解决什么问题?

  4. 容器内 localhost 指向哪里?数据库在宿主机或另一容器时各应核对什么配置?

  5. health 通过还缺哪类业务证据?怎样用同一笔订单证明重启和替换应用后数据仍保留?

  6. 为什么 import 模块不应自动执行导入?缺配置应返回什么退出码?日志应怎样说明失败且避免泄漏密钥?

再看一眼真实业务

把预习读到的运行条件/版本变化与自己的部署说明对照。公开商品页不能证明后台容器技术,跨环境可用性必须靠你的构建、启动和数据验证。

今天留下什么,下节课怎么接着用

同时保留本人运行入口、配置说明、正常导出与缺配置退出记录,下一日接入测试和 CI。

保留 Dockerfile、忽略文件、安全配置示例、固定依赖、拓扑、五段证据和一次配置故障闭环。W02-D05 将这些步骤写入可供同伴和 CI 执行的说明。

本机版本证据如实记录;未实跑的目标系统保持待验证。Kubernetes、镜像优化大全和生产发布不作为今天新增要求。

补充交接:D05 给本人模块补隔离测试,再交同伴与 CI 执行同一命令。本人 commerce_ops 每天增量合并,不用后一天骨架覆盖前一天实现。

配套学习资料