Skip to content

Latest commit

 

History

History
44 lines (37 loc) · 2.75 KB

File metadata and controls

44 lines (37 loc) · 2.75 KB

第17章:客户端接入与发布

学习目标

  • 编写最小客户端验证 SSE 流
  • 准备配置与环境变量
  • 完成打包与部署检查清单

背景知识

  • 什么是容器化:把应用及其运行时依赖、配置封装成可移植的镜像,运行时隔离文件系统/网络/进程;相比虚拟机更轻量、启动更快、资源占用更小。
  • 什么是 Docker:主流的容器引擎与工具链,核心概念有 Dockerfile(构建脚本)、镜像(只读模板)、容器(镜像的运行实例)、registry(镜像仓库)、docker build/run/push/pull 等命令。
  • 没有容器时的痛点:每台机器手动装依赖/配置,环境不一致导致“只在我机上能跑”;交付和回滚复杂;升级/扩缩容需要重新配置系统环境;进程隔离弱,容易相互影响。
  • 用上 Docker 后如何部署:用 Dockerfile 构建镜像 → 推送到镜像仓库 → 服务器上用 docker rundocker compose 拉取并运行(传入环境变量、映射端口/卷);回滚只需换回旧镜像;水平扩容可通过多实例 + 负载均衡。
  • 进一步的编排(Kubernetes):当实例数/节点数增大时,可用 k8s 管理容器的调度、自动重启/滚动升级、服务发现与配置注入(ConfigMap/Secret),本章聚焦单机/小型部署,k8s 作为后续扩展方向了解即可。

https://blog.csdn.net/weixin_63540620/article/details/151763038

章节提纲

  • go build 发布、基础 Dockerfile 思路
  • 容器化:构建、传递环境变量、端口映射
  • 基础运维检查:日志、健康检查、资源限制

Docker 与 code/17 示例

  • 示例 Dockerfile(见 code/17/Dockerfile):多阶段构建,使用 golang:1.22 编译二进制,最终镜像基于 distroless 以减小体积、提升安全;暴露 8082 端口。
  • 构建命令:
cd code/17
docker build -t chatserver:dev .
  • 运行命令(需提供大模型访问配置):
docker run --rm -p 8082:8082 \
  -e ARK_API_KEY=$ARK_API_KEY \
  -e ARK_MODEL_ID=${ARK_MODEL_ID:-deepseek-v3-250324} \
  chatserver:dev
  • 环境变量:ARK_API_KEY 必填;ARK_MODEL_ID 可覆盖默认模型;如使用 JWT 密钥自定义,可在镜像内通过 JWT_SECRET(可扩展修改代码)传入。
  • 客户端验证:在宿主机打开 http://localhost:8082

容器化注意点

  • 健康检查:可以在容器编排中配置探针调用 /healthz
  • 日志:distroless 输出到 stdout/stderr,交由容器平台收集。
  • 资源:为生产环境设置内存/CPU 限制,避免 OOM;为流式接口设置合理超时。
  • 安全:尽量使用非 root 镜像(示例使用 nonroot 用户);不要把密钥写入镜像,改用环境变量或密钥管理服务。