服务端2月17日 14:46
Docker 容器怎么更新?滚动更新、蓝绿部署和回滚策略Docker 容器是不可变的——更新不是在容器里改代码,而是用新镜像替换旧容器。关键是怎么替换才能不停服。
## 最简单的更新:停旧启新
有停机时间。适合内部工具、非关键服务。停机时间取决于镜像拉取速度和启动时间。
## 滚动更新:Docker Swarm
Swarm 的滚动更新逐个替换容器,始终保持部分实例在线:
更新过程中部分容器跑 v1,部分跑 v2,用户无感知。如果新版本有问题,回滚:
## 蓝绿部署
准备两套环境(蓝和绿),切换流量:
蓝绿部署零停机,但需要双倍资源。适合关键服务的版本更新。
## Docker Compose 更新
Co...服务端2月17日 14:49
Docker 容器日志怎么查看和分析?日志驱动和集中化方案Docker 日志分两类:容器标准输出(docker logs)和应用自己的日志文件。
## docker logs
应用必须把日志输出到 stdout/stderr 才能用 docker logs 查看。
## 日志轮转(防止磁盘爆满)
每个容器最多 3 个文件,每个 10MB,超过自动轮转。
## 集中化日志
多容器环境下逐个 docker logs 不现实。用日志聚合:
- Loki + Grafana:轻量,推荐
- ELK Stack:功能全但重
- Fluentd:日志收集器
## 排查技巧
- grep 过滤:docker logs my-conta...服务端2月17日 14:49
Docker 容器网络不通怎么排查?DNS、端口和防火墙问题定位容器网络问题分三类:容器间不通、容器访问不了外网、外部访问不了容器。按层级排查:DNS → 端口映射 → 防火墙。
## 容器间通信问题
不在同一个网络:docker network connect my-network container-b。
Docker 内置 DNS 只在同网络内生效。用服务名(ping redis)而不是 IP。ping redis 失败但 IP 能通是 DNS 问题。
## 端口映射问题
常见错误:忘了 -p 参数、端口冲突、只绑定了 127.0.0.1。
## 容器访问不了外网
DNS 失败时手动指定:docker run --dn...服务端2月17日 14:50
Docker 容器内存泄漏怎么排查?OOM 和内存增长定位实战容器内存持续增长最终被 OOM Kill 是 Docker 最常见的问题之一。排查步骤:确认是不是真的泄漏 → 定位哪个容器 → 找到代码里的泄漏点。
## 确认问题
内存持续增长不回落大概率是泄漏。短暂增长后稳定不一定是泄漏——可能是 JVM/Node.js 堆还没触发 GC。
## 检查 OOM 事件
## 容器内定位
## 语言级分析
Node.js:用 v8.writeHeapSnapshot() 生成堆快照
Java:用 jmap -dump 生成堆 dump
Python:用 tracemalloc 或 objgraph
用 Chrome DevTo...服务端2月17日 14:50
Docker 怎么配合微服务架构?一个服务一个容器的实践方法微服务架构的核心是一个服务一个进程——Docker 的容器天然就是为此设计的。每个微服务打包成独立镜像,独立部署、独立扩缩容。
## 一个服务一个容器
每个服务有自己的 Dockerfile,独立构建和部署。
## 服务间通信
同一 Docker 网络内,容器用服务名互相访问(http://user-service:3000),Docker 内置 DNS 自动解析。跨主机通信需要额外方案:Docker Swarm 用 Overlay 网络,Kubernetes 用 Service。
## 扩缩容
Compose 的 --scale 适合开发测试。生产环境用 K8s 的...服务端2月17日 14:53
Docker 跑数据库怎么做?数据持久化、备份和生产环境注意事项Docker 跑数据库能快速搭建开发环境,但生产环境要格外注意数据持久化、性能和备份。一句话:开发环境放心用,生产环境谨慎用。
## 数据持久化:第一优先级
容器删了数据就没了——这是 Docker 跑数据库最大的风险。必须用 Volume 挂载数据目录:
```bash
# MySQL:把 /var/lib/mysql 挂到宿主机
docker run -d -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret mysql:8
# PostgreSQL:把 /var/lib/postgresql/dat...服务端2月17日 17:55
Next.js App Router 怎么定义路由?动态路由、布局嵌套和 loading 详解Next.js App Router 用文件系统定义路由——文件夹结构就是 URL 结构。每个路由三要素:page.tsx(页面)、layout.tsx(布局)、loading.tsx(加载状态)。
## 基本路由映射
```
app/
├── page.tsx → /
├── about/
│ └── page.tsx → /about
├── blog/
│ ├── page.tsx → /blog
│ └── [slug]/
│ └── page.tsx → /blog/:slug(...服务端2月17日 17:55
Next.js SSR、SSG 和 ISR 有什么区别?怎么选?SSR、SSG、ISR 是三种不同的页面渲染策略,区别在于 HTML 什么时候生成。选哪个取决于数据的更新频率和页面的实时性要求。
## 三种策略对比
| 策略 | HTML 生成时机 | 适合场景 | 性能 |
|------|-------------|----------|------|
| SSG | 构建时 | 博客、文档、营销页 | 最快(CDN 缓存) |
| SSR | 每次请求时 | 仪表盘、个人主页 | 中等(服务端计算) |
| ISR | 构建时 + 定时更新 | 商品列表、新闻 | 接近 SSG 的速度 |
## SSG(Static Site Gener...服务端2月17日 17:56
Next.js Pages Router 和 App Router 有什么区别?该不该迁移?Pages Router 是 Next.js 的原始路由系统,App Router 是 13+ 引入的新系统。核心区别:App Router 基于 React Server Components,默认在服务端渲染;Pages Router 默认在客户端渲染。新项目用 App Router,老项目不急迁移。
## 架构对比
| 维度 | Pages Router | App Router |
|------|-------------|------------|
| 目录 | `pages/` | `app/` |
| 默认渲染 | 客户端 | 服务端(RSC) |
| 数据获取 | ...服务端2月17日 18:02
Next.js 认证怎么做?NextAuth.js 配置 OAuth 和凭证登录实战Next.js 认证最主流的方案是 NextAuth.js(v5 改名 Auth.js)。它处理了 OAuth、JWT、Session 管理等所有细节,30 分钟就能搭好 Google/GitHub 登录。
## 最快上手:NextAuth.js
```bash
npm install next-auth@beta
```
```typescript
// app/api/auth/[...nextauth]/route.ts
import NextAuth from 'next-auth';
import GitHub from 'next-auth/providers/gith...