首页
/ 使用Docker Compose部署Ferry工作流系统指南

使用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"

关键配置解析

  1. 构建方式:使用项目根目录下的Dockerfile构建镜像
  2. 依赖关系:确保数据库和Redis服务先启动
  3. 网络暴露:映射8002端口供外部访问
  4. 配置管理:挂载本地config目录实现配置持久化
  5. 日志管理:限制日志文件大小和数量,防止磁盘占用过大

部署实践建议

  1. 环境准备

    • 确保已安装Docker和Docker Compose
    • 建议Docker版本不低于19.03,Compose不低于1.25
  2. 配置调整

    • 修改./config目录中的配置文件以适应实际环境
    • 生产环境应修改数据库密码和Redis配置
  3. 启动命令

    docker-compose up -d
    
  4. 监控与维护

    • 使用docker-compose logs -f查看实时日志
    • 定期备份./mysql/db目录中的数据库文件

常见问题排查

  1. 容器启动顺序问题

    • 虽然配置了depends_on,但服务可用性仍需应用层处理
    • 建议在应用代码中添加连接重试逻辑
  2. 端口冲突

    • 如8002端口被占用,可修改为其他端口
    • 确保防火墙规则允许对应端口通信
  3. 数据持久化

    • 验证volume挂载是否成功
    • 检查宿主机目录权限

性能优化方向

  1. 根据业务规模调整MySQL和Redis的资源限制
  2. 考虑添加Redis哨兵或集群配置
  3. 对于高并发场景,可配置MySQL读写分离

通过以上Docker Compose配置,Ferry工作流系统可以快速部署并保持高可用性。这种容器化部署方式特别适合开发测试环境和中小型生产部署场景。