ubuntu微服务运维需分层推进:先配置docker、openjdk/node.js等基础环境;再通过dockerfile和docker-compose.yml实现服务编排与持久化;最后集成prometheus+grafana监控、nginx/traefik路由及ci/cd自动化部署。

Ubuntu 服务器上做微服务运维搭建,核心是“环境可控、服务可管、故障可察”。不追求一步到位,而是按模块分层推进:先稳住基础设施,再编排服务,最后补上可观测性和自动化能力。
基础环境与容器运行时准备
这是所有后续工作的地基。Ubuntu 20.04 或 22.04 LTS 是推荐起点,系统更新后重点配置 Docker 和必要工具:
- 用官方脚本或阿里云镜像源安装 Docker CE 和 docker-compose,避免 Ubuntu 自带旧版带来的兼容问题
- 配置 /etc/docker/daemon.json:加入国内镜像加速地址(如 https://docker.mirrors.ustc.edu.cn)和日志轮转(max-size=50m, max-file=3),防止磁盘被日志打满
- 将部署用户加入 docker 组,避免频繁 sudo;启用 systemctl enable docker 确保开机自启
- Java 微服务需提前装好 OpenJDK 8 或 17(根据项目要求),Node.js 服务则用 curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash 安装稳定版
微服务编排与生命周期管理
单靠 docker run 启动多个服务不可持续,必须用声明式方式统一管理:
- 每个服务单独写 Dockerfile,Java 项目优先用多阶段构建(base 镜像 + jar 打包),Node.js 项目注意 WORKDIR 和 npm ci --only=production
- docker-compose.yml 中定义网络(driver: bridge)、健康检查(healthcheck)、资源限制(mem_limit, cpus)和启动依赖(depends_on + condition: service_healthy)
- 数据库、Redis 等中间件务必挂载宿主机目录做持久化(如 -v /data/mysql:/var/lib/mysql),并设置初始化脚本或配置文件映射
- 生产环境禁用 build 指令,改用预构建镜像 + image: 字段,提升部署一致性
可观测性与日常运维支撑
没有监控和日志,微服务就像黑盒。轻量但有效的组合即可满足多数场景:
- 日志统一收集:在 docker-compose.yml 中为每个服务配置 logging.driver: "json-file" 并设轮转,再用 docker-compose logs -f service-name 实时查看
- 基础指标采集:部署 cadvisor(监控容器) + node-exporter(监控主机) + Prometheus(抓取聚合) + Grafana(可视化),四者用 compose 编排,无需复杂配置
- 服务发现与路由:若服务数超 5 个,建议引入 Nacos 或 Consul 做注册中心;前端流量统一走 Nginx 或 Traefik,配置基于 hostname 的路由规则
- 常用运维命令固化:比如 docker-compose ps 查状态、docker-compose restart service 快速恢复、docker system prune -f 清理无用镜像(定期执行)
上线与迭代流程规范化
运维不是只管“跑起来”,更要支持持续交付:
- 代码提交后触发 GitHub Actions 或 GitLab CI:自动构建镜像 → 推送私有仓库(如 Harbor) → 更新服务器上的 docker-compose.yml 中 image tag → 执行 docker-compose pull && docker-compose up -d
- 版本回滚有据可依:每次部署前备份旧版 docker-compose.yml 和环境变量文件,回滚只需替换配置 + 重启
- 敏感配置分离:数据库密码、API Key 等不写进 compose 文件,改用 .env 文件或 Docker secrets(单机可用 docker config)
- 定期验证:每周执行一次 curl -f http://localhost:port/actuator/health(Spring Boot)或 /health(Express/Nest)确保所有健康端点返回 200











