外观
实训 14:Compose 标准发布包与重复部署
约 973 字大约 3 分钟
云计算实训第14次课
2026-07-30
使用云主机 B 的课程专用目录或本人已授权的 ECS;入口只绑定回环地址。
一、实训目标
- 核对标准发布包目录;
- 展开 Compose 最终配置;
- 部署并验证两项服务健康;
- 完成第二次部署与一致性检查;
- 恢复缺失
.env故障并安全清理。
二、环境与安全边界
- 只使用教师分配的目录、项目名和端口。
- 不改已有业务端口,不停止未知容器。
.env不进入报告或压缩包。- 不执行全局容器、镜像、卷或网络清理。
- 本课默认端口为远端
127.0.0.1:18014;多人并行时按教师分配值修改。
三、准备标准包
[ECS] cd /opt/xpk-course-demos/lesson-14/release用途:进入课程专用目录。本人 ECS 按教师给出的目录调整。
[ECS] find . -maxdepth 2 -type f -print用途:列出发布包文件。预期包含 Compose、变量示例、三项脚本、应用文件和 Nginx 配置。
[ECS] cp .env.example .env用途:创建本次部署变量。复制后核对项目名和端口,不截图 .env 的私密项目。
截图 1:发布包文件和已确认的非敏感变量名。
四、展开配置
[ECS] docker compose --env-file .env config --services用途:列出最终服务。预期为 api 和 web。
[ECS] docker compose --env-file .env config --environment \
| grep -E '^(COMPOSE_PROJECT_NAME|COURSE_PORT)='用途:只显示允许进入截图的项目名和端口。不要截图未经筛选的完整输出,其中可能包含 SSH 连接地址或其他当前 Shell 环境变量。
[ECS] docker compose --env-file .env config用途:查看规范化模型。核对 service_healthy、两项 healthcheck、host_ip: 127.0.0.1 和发布端口。
截图 2:展开后的依赖、健康与端口边界。
五、首次部署与验收
[ECS] ./deploy.sh用途:配置检查后启动,并等待服务 healthy。预期两项 PASS。
[ECS] docker compose --env-file .env ps用途:查看 api/web 状态。预期均为 healthy,只有 web 映射宿主机回环端口。
[ECS] ./verify.sh用途:检查配置、服务、端口、容器健康、主页和 API。预期全部 PASS。
截图 3:状态与自动验收。
六、第二次部署
[ECS] docker compose --env-file .env ps -q api用途:记录 api 容器 ID 前 12 位。对 web 重复一次。
[ECS] ./deploy.sh用途:从同一标准包再次部署。配置未变时预期容器保持 Running/Healthy。
[ECS] ./verify.sh用途:沿相同路径再次验收。比较部署前后容器 ID、项目名、端口和页面版本。
截图 4:第二次部署及前后对比。
七、缺少 .env 的故障恢复
[ECS] mv .env .env.saved用途:保存原文件并制造缺失 .env 的可恢复故障。
[ECS] ./deploy.sh用途:观察脚本尽早失败。预期不会改变现有容器。
[ECS] mv .env.saved .env用途:恢复原变量文件。
[ECS] ./deploy.sh && ./verify.sh用途:重新部署并同路回归。预期全部通过。
截图 5:原始报错、恢复命令和回归结果。
八、人工检查
- 目录中的相对路径都指向发布包内部;
.env和evidence/命中.gitignore;- healthcheck 真正访问应用路径;
- 第二次部署没有出现重复项目;
- 报告不含
.env、完整容器 ID、地址或日志全集。
九、清理与提交
[ECS] ./cleanup.sh用途:只清理本课 Compose 项目。
[ECS] ss -lnt 'sport = :18014'用途:确认本课端口释放。
[ECS] docker ps --format '{{.Names}} {{.Ports}}'用途:确认既有业务容器仍在运行。
提交:
班级_学号_姓名_第14次课_Compose标准化交付报告.docx只提交一个 Word 到智慧职教“第14次课”。
