Austin容器化部署:Docker Compose一键部署指南
痛点:传统部署的复杂性
你是否还在为消息推送平台的复杂部署而头疼?面对MySQL、Redis、Kafka、Flink、Nacos、XXL-JOB等多个中间件的安装配置,传统的手动部署方式不仅耗时耗力,还容易出错。每个中间件都需要单独安装、配置、启动,版本兼容性问题更是让人防不胜防。
读完本文,你将获得:
- ✅ 完整的Austin平台Docker Compose部署方案
- ✅ 一键启动所有依赖中间件的配置方法
- ✅ 生产环境级别的容器化部署最佳实践
- ✅ 详细的配置说明和故障排查指南
- ✅ 可视化监控和日志收集的集成方案
架构概览:容器化部署全景图
Austin消息推送平台采用微服务架构,依赖多个中间件组件。通过Docker Compose,我们可以将整个系统容器化,实现一键部署。
环境准备:Docker与Docker Compose安装
系统要求
- 操作系统:CentOS 7.6+
- 内存:建议16GB+(最小8GB)
- 存储:50GB+可用空间
- Docker:20.10+
- Docker Compose:1.24+
安装步骤
# 安装GCC环境
yum -y install gcc gcc-c++
# 安装Docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置阿里云镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新软件包索引
yum makecache fast
# 安装Docker CE
yum -y install docker-ce
# 启动Docker
systemctl start docker
systemctl enable docker
# 安装Docker Compose
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 国内镜像加速
# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 添加执行权限
chmod +x /usr/local/bin/docker-compose
# 创建软链接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 验证安装
docker-compose --version
核心配置:Docker Compose详解
完整的docker-compose.yml配置
Austin项目提供了完整的Docker Compose配置文件,位于项目根目录的docker-compose.yml文件中。该文件定义了所有必需的中间件服务:
version: '3'
services:
austin-mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root123_A
TZ: Asia/Shanghai
volumes:
- ./doc/sql:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
austin-redis:
image: redis:3.2
volumes:
- ./doc/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf
command: redis-server /usr/local/etc/redis/redis.conf
ports:
- "6379:6379"
austin-zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
austin-kafka:
image: wurstmeister/kafka
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://austin-kafka:9092
KAFKA_ZOOKEEPER_CONNECT: austin-zookeeper:2181
KAFKA_CREATE_TOPICS: "austinBusiness:1:1,austinRecall:1:1,austinTraceLog:1:1"
ports:
- "9092:9092"
depends_on:
- austin-zookeeper
austin-xxl-job:
image: xuxueli/xxl-job-admin:2.3.0
environment:
PARAMS: '--spring.datasource.url=jdbc:mysql://austin-mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8 --spring.datasource.username=root --spring.datasource.password=root123_A'
ports:
- "8080:8080"
depends_on:
- austin-mysql
austin-nacos:
image: nacos/nacos-server:v2.1.0
environment:
MODE: standalone
SPRING_DATASOURCE_PLATFORM: mysql
MYSQL_SERVICE_HOST: austin-mysql
MYSQL_SERVICE_DB_NAME: nacos_config
MYSQL_SERVICE_USER: root
MYSQL_SERVICE_PASSWORD: root123_A
ports:
- "8848:8848"
depends_on:
- austin-mysql
austin:
build: .
ports:
- "7777:7777"
depends_on:
- austin-redis
- austin-mysql
- austin-kafka
- austin-xxl-job
- austin-nacos
networks:
app:
driver: bridge
关键配置说明
| 服务 | 版本 | 端口 | 依赖 | 说明 |
|---|---|---|---|---|
| MySQL | 5.7 | 3306 | - | 主数据库,存储业务数据 |
| Redis | 3.2 | 6379 | - | 缓存和消息队列 |
| Zookeeper | latest | 2181 | - | Kafka依赖的协调服务 |
| Kafka | latest | 9092 | Zookeeper | 消息队列,用于异步处理 |
| XXL-JOB | 2.3.0 | 8080 | MySQL | 分布式任务调度平台 |
| Nacos | 2.1.0 | 8848 | MySQL | 配置中心和服务发现 |
| Austin应用 | 自定义 | 7777 | 所有服务 | 主业务应用 |
部署流程:一键启动所有服务
步骤1:克隆项目并准备环境
# 克隆项目
git clone https://gitcode.com/GitHub_Trending/au/austin.git
cd austin
# 构建Austin应用镜像
mvn clean package -DskipTests
docker build -t austin-app .
步骤2:启动所有服务
# 一键启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
步骤3:验证服务状态
# 检查MySQL
docker exec -it austin-mysql mysql -uroot -proot123_A -e "SHOW DATABASES;"
# 检查Redis
docker exec -it austin-redis redis-cli -a austin ping
# 检查Kafka主题
docker exec -it austin-kafka /opt/kafka/bin/kafka-topics.sh --list --zookeeper austin-zookeeper:2181
数据库初始化:自动执行SQL脚本
Docker Compose配置中通过卷挂载实现了数据库的自动初始化:
初始化脚本位于 doc/sql/ 目录下:
austin.sql- 主业务数据库表结构nacos.sql- Nacos配置中心表结构xxl-job.sql- XXL-JOB任务调度表结构
网络配置:服务间通信机制
Docker Compose创建了专用的桥接网络app,所有服务都在同一网络中,可以通过服务名进行通信:
可选组件部署:监控与日志收集
Prometheus + Grafana监控
# doc/docker/prometheus/docker-compose.yaml
version: '2'
services:
prometheus:
image: prom/prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana
ports:
- "3000:3000"
Graylog日志收集
# doc/docker/graylog/docker-compose.yml
version: '3'
services:
graylog:
image: graylog/graylog:4.2
environment:
GRAYLOG_HTTP_EXTERNAL_URI: http://服务器IP:9009/
ports:
- 9009:9000
- 12201:12201
故障排查与常见问题
1. 端口冲突问题
如果出现端口冲突,可以修改docker-compose.yml中的端口映射:
services:
austin-mysql:
ports:
- "3307:3306" # 外部端口:容器内部端口
2. 内存不足问题
如果服务器内存不足,可以调整JVM参数:
services:
austin:
environment:
JAVA_OPTS: "-Xms512m -Xmx1024m"
3. 服务启动顺序问题
使用depends_on确保服务启动顺序:
services:
austin:
depends_on:
- austin-mysql
- austin-redis
- austin-kafka
4. 数据持久化问题
为重要数据添加卷持久化:
services:
austin-mysql:
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
性能优化建议
资源配置建议
| 服务 | CPU | 内存 | 磁盘 | 网络 |
|---|---|---|---|---|
| MySQL | 2核 | 4GB | SSD | 千兆 |
| Redis | 1核 | 2GB | 内存 | 千兆 |
| Kafka | 2核 | 4GB | SSD | 千兆 |
| Austin应用 | 4核 | 8GB | 普通 | 千兆 |
JVM调优参数
environment:
JAVA_OPTS: "-server -Xms4g -Xmx4g -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
总结与展望
通过Docker Compose一键部署Austin消息推送平台,我们实现了:
- 标准化部署:统一的部署流程,避免环境差异导致的问题
- 快速启动:从零到完整环境只需几分钟时间
- 易于维护:版本控制和配置管理更加简单
- 资源隔离:每个服务独立运行,互不影响
- 扩展性强:轻松添加新的服务组件
未来可以进一步优化:
- 使用Kubernetes进行容器编排
- 实现自动化CI/CD流水线
- 添加更完善的监控告警机制
- 支持多环境部署(开发、测试、生产)
现在就开始你的Austin容器化之旅吧!只需简单的几条命令,就能拥有一个功能完整的消息推送平台。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



