浏览 AI 知识库

Docker 项目部署教程:先说明端口、卷、环境变量和健康检查

容器显示 Up,只说明进程还在。端口、卷、环境变量、依赖和健康检查要一起验证,才能确认服务可访问、数据也不会随重建消失。

按实际操作顺序推进

每完成一段就检查当前输出,确认结果符合预期后再继续。

  1. 01准备动手前,把材料和不能改的部分定下来
  2. 02执行端口能访问,不代表数据和健康检查正确
  3. 03检查为什么“健康检查通过,功能接口仍失败”还不能交付
  4. 04完成容器运行契约通过哪些检查才算完成
从手头这一份材料开始

Docker 容器已经 Up,浏览器为什么还是打不开

容器显示 Up,浏览器却打不开;重建后上传文件全部消失。Dockerfile 能构建不代表端口、卷和健康契约正确。

  • 端口与监听地址一致
  • 持久卷经重建验证
  • 健康、日志和停止行为正常
本例材料

动手前,把材料和不能改的部分定下来

需要确认本例内容
现有材料Node 服务监听容器 3000;主机希望暴露 8080;上传目录 `/app/data`;数据库在独立服务。
不能越过的边界说明端口、网络、卷、变量、用户、健康和停止;持久数据不写容器层;秘密不进镜像。
要交付的结果容器运行契约
实际操作

Docker 项目部署教程,从“镜像与命令”开始做

镜像与命令

写基础镜像、目标架构、构建上下文、启动命令和非 root 用户要求。

端口与网络

区分容器监听端口、宿主映射、服务名和外部入口,说明是否经过代理。

卷与数据

标持久化目录、只读挂载、初始化和备份;明确删除容器是否应保留数据。

变量与密钥

列名称、来源、必填、默认和重启影响,不把生产值放进 Compose 或镜像层。

健康与依赖

健康检查使用真实就绪条件,依赖服务有超时和重试;启动顺序不替代可用性判断。

容器契约

端口能访问,不代表数据和健康检查正确

项示例输入验证失败处理
端口容器 8080,宿主 18080从代理和本机各请求一次核对监听与映射,不改外部入口
卷data/ 持久化,配置只读挂载删除容器后重建并读取数据恢复备份,避免误删卷
变量DB_URL 来自环境,缺失即拒绝启动值不出现在镜像和日志修注入来源,不写死默认
健康检查真实就绪接口重启、慢依赖和失败状态不把进程存活当服务可用

端口、目录和变量为演示;真实契约按项目 compose/部署目标确认。

最终输出

完成后的容器运行契约

运行契约映射 `8080:3000`,命名卷挂 `/app/data`,健康检查访问 `/healthz`。重建容器前后测试文件哈希一致;容器日志无秘密,非 root 用户运行,依赖服务未就绪时健康为失败。

常见失败

为什么“健康检查通过,功能接口仍失败”还不能交付

健康检查通过,功能接口仍失败

原因
健康只返回固定 200,没有检查关键依赖
怎么改
区分存活与就绪检查,关键流程另做外部冒烟测试
验收方式

容器运行契约通过哪些检查才算完成

进一步核对

部署与线上:参考资料与核对入口