最近在CentOS 7上折腾微服务部署时,发现手动配置各种依赖和网络关系特别容易出错。经过反复实践,终于总结出一套用Docker Compose编排全家桶服务的标准化流程,现在把关键步骤和避坑要点分享给大家。
-
环境准备阶段
首先需要确保系统内核版本高于3.10(通过uname -r检查),然后清理可能存在的旧版docker。安装依赖包时建议加上yum-utils,方便后续添加仓库。官方推荐的docker-ce安装方式是通过yum-config-manager添加稳定版仓库,比直接rpm安装更便于后续升级。 -
Docker与Compose安装
安装docker-ce后需要启动服务并设为开机自启,特别注意要把当前用户加入docker组(需要退出重登录生效)。docker-compose的安装建议直接从GitHub下载特定版本二进制文件,比pip安装更稳定。验证安装时除了看版本号,最好运行个hello-world容器测试基础功能。 -
编写docker-compose.yml
文件结构主要包含四个服务:nginx作为前端代理(配置了80/443端口映射)、springboot应用服务(依赖mysql和redis)、mysql8数据库(挂载数据卷和初始化脚本)、redis缓存(配置持久化)。网络方面创建了自定义bridge网络确保服务互通,并通过depends_on控制启动顺序。 -
Nginx关键配置
在conf.d目录下创建应用配置文件时,需要设置upstream指向springboot服务集群(本例演示两个实例),ssl证书使用openssl生成自签名证书(生产环境替换为正式证书)。特别注意要配置HTTP自动跳转HTTPS,以及合理的proxy_pass参数避免接口404。 -
MySQL数据初始化
通过volumes将sql脚本挂载到/docker-entrypoint-initdb.d目录实现自动初始化,建议提前在本地测试sql脚本语法。密码等敏感信息通过environment变量传入,不要硬编码在yml文件中。记得检查挂载目录的权限,mysql用户需要读写权限。 -
日志与健康管理
每个服务都配置了日志驱动(json-file)并挂载到宿主机特定目录,通过logging选项限制日志文件大小和数量。healthcheck对数据库和服务端特别重要,建议用curl或mysqladmin做存活检测,避免服务未就绪时产生连锁故障。 -
操作命令集
启动全家桶使用docker-compose up -d,停止时建议先停应用再停数据库。查看日志可以单独指定服务名(如docker-compose logs -f springboot)。调试阶段可以去掉-d参数实时观察启动过程。
实际部署时遇到过几个典型问题:CentOS7的firewalld会阻断容器网络,需要放行相关端口或直接关闭;SELinux可能导致挂载目录权限异常,临时解决方案是setenforce 0;MySQL8默认认证插件与老客户端不兼容,需要在初始化脚本中显式设置。
这套方案在InsCode(快马)平台上测试时特别顺畅,它的在线编辑器能直接验证yml语法,还自带容器日志查看功能。最惊艳的是部署按钮一点就能生成临时访问域名,不用自己配置NGINX和证书,省去了至少两小时的调试时间。
对于需要快速验证微服务架构的团队,这种开箱即用的体验实在太重要了。平台预置的CentOS环境连docker都装好了,直接上传compose文件就能看到所有服务状态,比本地虚拟机方便太多。

1042

被折叠的 条评论
为什么被折叠?



