为什么选择容器化
把所有个人服务塞进一台机器,最怕的就是「装了这个坏了那个」。容器化带来的隔离性与可复现性,让每个服务都活在自己的小世界里,互不干扰。
一次构建,处处运行。这不是口号,而是运维生活的止痛药。
docker compose 编排
用一个 docker-compose.yml 描述整个服务栈,包括博客、网盘、监控与反向代理。核心原则只有一条:服务端口只 expose,不映射到宿主机,全部流量统一从反向代理入口进入。
services:
halo:
image: halohub/halo:2.26
expose:
- "8090"
npm:
image: jc21/nginx-proxy-manager
ports:
- "80:80"
- "443:443"
- "81:81"
反向代理与证书
Nginx Proxy Manager 用图形界面管理反代规则,Let's Encrypt 证书自动续签,配合子域名分发到不同服务,是最省心的组合。
- blog → Halo 博客
- www → 个人首页
- pan → Alist 网盘
- status → Uptime Kuma 监控
几点经验
- 数据卷要单独备份,镜像升级前先打快照;
- 数据库不要暴露端口,能少一个入口就少一个风险;
- 监控先行,服务挂了要第一时间知道。
容器化不是银弹,但它确实把「折腾」变成了「配置」。
评论