云服务器部署Docker微服务持续集成实战
文章分类:售后支持 /
创建时间:2025-10-18
数字化浪潮下,企业部署应用时更倾向选择资源灵活、管理便捷的云服务器,这已是行业共识。而Docker微服务与持续集成(CI)的结合,能进一步提升开发效率、保障软件质量。本文以一个电商系统案例为切入点,带你实操云服务器上Docker微服务部署与持续集成全流程。
环境搭建:云服务器与基础工具准备
第一步是选择适配的云服务器。建议优先考虑2核4G以上配置,既能满足多容器运行需求,也便于后续扩展。操作系统推荐使用CentOS 7或Ubuntu 20.04这类主流Linux发行版,兼容性和社区支持更完善。
在云服务器上需安装Docker(容器化打包工具)和Docker Compose(多容器编排工具)。以Ubuntu系统为例,执行以下命令即可完成安装:
# 安装Docker
sudo apt update && sudo apt install docker.io
# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
安装完成后,输入`docker --version`和`docker-compose --version`验证是否成功。
微服务架构设计与容器化封装
我们以电商系统为例,设计用户服务、商品服务、订单服务三个独立微服务,每个服务配备专属数据库。关键要遵循“高内聚低耦合”原则——比如用户服务只处理注册登录,商品服务专注商品信息管理,避免功能重叠。
编写Dockerfile打包单个服务
每个微服务需通过Dockerfile打包成镜像。以用户服务(Python技术栈)为例,Dockerfile内容如下:
# 基于官方Python 3.9镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露服务端口
EXPOSE 5000
# 启动命令
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "app:app"]
这一过程将应用及其依赖完全封装,确保“一次构建,到处运行”。
用Docker Compose编排多服务
通过docker-compose.yml文件定义多容器运行规则,示例配置如下:
version: '3.8'
services:
user-service:
build: ./user-service # 指定Dockerfile路径
ports:
- "5000:5000" # 宿主机端口:容器端口
depends_on:
- user-mysql # 依赖用户数据库服务
user-mysql:
image: mysql:8.0 # 使用官方MySQL镜像
environment:
MYSQL_ROOT_PASSWORD: "root123"
volumes:
- ./user-mysql-data:/var/lib/mysql # 数据持久化
同理配置商品服务和订单服务,最终实现多容器协同运行。
持续集成:从代码提交到自动部署
持续集成的核心是“代码变更触发自动构建测试”。这里选择Jenkins作为CI工具,在云服务器上安装并配置。
Jenkins任务创建与触发
1. 安装Jenkins:通过`java -jar jenkins.war`启动,按向导完成初始配置;
2. 关联代码仓库:在任务配置中填写Git仓库地址(如GitHub/Gitee);
3. 设置触发条件:选择“GitHub hook trigger”或“轮询SCM”,例如每5分钟检查一次代码变更。
构建脚本实现自动化部署
关键构建步骤需写入脚本,确保代码更新后自动完成镜像构建、旧容器替换:
#!/bin/bash
# 拉取最新代码
git pull origin main
# 构建并启动新容器(--build参数强制重新构建镜像)
docker-compose up -d --build
# 清理旧镜像(保留最近3个版本)
old_images=$(docker images | grep "user-service" | awk '{print $3}' | tail -n +4)
if [ -n "$old_images" ]; then
docker rmi $old_images
fi
脚本执行后,新镜像会自动替换旧容器,实现无缝升级。
测试验证与长期优化
部署完成后需验证服务可用性:通过`curl http://云服务器公网IP:5000/health`检查用户服务健康状态;调用商品服务接口测试商品查询功能;模拟下单流程验证订单服务。
长期运行中,可通过以下方式优化:
- 日志监控:集成ELK(Elasticsearch+Logstash+Kibana)收集容器日志;
- 性能调优:根据监控数据调整容器CPU/内存限制;
- 灾难恢复:定期备份docker-compose.yml和数据库卷数据。
从环境搭建到持续集成,云服务器为Docker微服务提供了稳定的运行底座。掌握这套流程后,无论是电商系统还是其他类型的微服务应用,都能快速高效地完成部署与迭代。
上一篇: 海外VPS容器化部署的5个实践要点