使用Docker Compose部署Ferry工作流系统指南
2025-07-07 06:15:57作者:申梦珏Efrain
概述
Ferry是一个基于Docker的工作流管理系统,本文将通过解析其docker-compose.yml配置文件,详细介绍如何快速部署Ferry系统的各个组件。Docker Compose作为容器编排工具,能够简化多容器应用的部署和管理过程。
核心服务组件
1. MySQL数据库服务 (ferry_mysql)
MySQL作为Ferry系统的核心数据存储,配置如下:
ferry_mysql:
image: mysql:8
container_name: ferry_mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_DATABASE: 'ferry'
MYSQL_USER: 'ferry'
MYSQL_PASSWORD: '123456'
volumes:
- './mysql/db:/var/lib/mysql'
- '/etc/localtime:/etc/localtime:ro'
技术要点解析:
- 使用MySQL 8官方镜像
- 自动创建名为"ferry"的数据库和同名用户
- 数据持久化通过挂载本地
./mysql/db
目录实现 - 时区同步配置确保容器与宿主机时间一致
- 默认不暴露3306端口,保证数据库安全
安全建议:生产环境应修改默认密码,并考虑启用SSL连接。
2. Redis缓存服务 (ferry_redis)
Redis为系统提供高性能缓存支持:
ferry_redis:
container_name: ferry_redis
image: redis:latest
restart: unless-stopped
command: redis-server --save 60 1 --loglevel warning
配置特点:
- 使用最新版Redis官方镜像
- 配置了自动持久化策略(60秒内至少1次变更时保存)
- 日志级别设置为warning以减少日志量
- 同样默认不暴露6379端口
3. Ferry主应用服务
核心工作流引擎配置:
ferry:
build:
context: "."
dockerfile: "Dockerfile"
image: ferry:latest
container_name: ferry
restart: unless-stopped
depends_on:
- ferry_mysql
- ferry_redis
ports:
- "8002:8002"
volumes:
- '/etc/localtime:/etc/localtime:ro'
- './config:/opt/workflow/ferry/config'
logging:
driver: json-file
options:
max-size: "10m"
max-file: "10"
关键配置解析:
- 构建方式:使用项目根目录下的Dockerfile构建镜像
- 依赖关系:确保数据库和Redis服务先启动
- 网络暴露:映射8002端口供外部访问
- 配置管理:挂载本地config目录实现配置持久化
- 日志管理:限制日志文件大小和数量,防止磁盘占用过大
部署实践建议
-
环境准备:
- 确保已安装Docker和Docker Compose
- 建议Docker版本不低于19.03,Compose不低于1.25
-
配置调整:
- 修改
./config
目录中的配置文件以适应实际环境 - 生产环境应修改数据库密码和Redis配置
- 修改
-
启动命令:
docker-compose up -d
-
监控与维护:
- 使用
docker-compose logs -f
查看实时日志 - 定期备份
./mysql/db
目录中的数据库文件
- 使用
常见问题排查
-
容器启动顺序问题:
- 虽然配置了depends_on,但服务可用性仍需应用层处理
- 建议在应用代码中添加连接重试逻辑
-
端口冲突:
- 如8002端口被占用,可修改为其他端口
- 确保防火墙规则允许对应端口通信
-
数据持久化:
- 验证volume挂载是否成功
- 检查宿主机目录权限
性能优化方向
- 根据业务规模调整MySQL和Redis的资源限制
- 考虑添加Redis哨兵或集群配置
- 对于高并发场景,可配置MySQL读写分离
通过以上Docker Compose配置,Ferry工作流系统可以快速部署并保持高可用性。这种容器化部署方式特别适合开发测试环境和中小型生产部署场景。