- 编写最小客户端验证 SSE 流
- 准备配置与环境变量
- 完成打包与部署检查清单
- 什么是容器化:把应用及其运行时依赖、配置封装成可移植的镜像,运行时隔离文件系统/网络/进程;相比虚拟机更轻量、启动更快、资源占用更小。
- 什么是 Docker:主流的容器引擎与工具链,核心概念有 Dockerfile(构建脚本)、镜像(只读模板)、容器(镜像的运行实例)、registry(镜像仓库)、
docker build/run/push/pull等命令。 - 没有容器时的痛点:每台机器手动装依赖/配置,环境不一致导致“只在我机上能跑”;交付和回滚复杂;升级/扩缩容需要重新配置系统环境;进程隔离弱,容易相互影响。
- 用上 Docker 后如何部署:用 Dockerfile 构建镜像 → 推送到镜像仓库 → 服务器上用
docker run或docker compose拉取并运行(传入环境变量、映射端口/卷);回滚只需换回旧镜像;水平扩容可通过多实例 + 负载均衡。 - 进一步的编排(Kubernetes):当实例数/节点数增大时,可用 k8s 管理容器的调度、自动重启/滚动升级、服务发现与配置注入(ConfigMap/Secret),本章聚焦单机/小型部署,k8s 作为后续扩展方向了解即可。
https://blog.csdn.net/weixin_63540620/article/details/151763038
- go build 发布、基础 Dockerfile 思路
- 容器化:构建、传递环境变量、端口映射
- 基础运维检查:日志、健康检查、资源限制
- 示例 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用户);不要把密钥写入镜像,改用环境变量或密钥管理服务。