Automatisch项目Docker Compose部署指南
2025-07-06 04:04:45作者:柯茵沙
概述
Automatisch是一个自动化工作流平台,本文将从技术角度详细解析其Docker Compose部署方案,帮助开发者理解其架构设计和部署要点。
核心服务架构
Automatisch采用微服务架构设计,通过Docker Compose编排了四个核心服务:
- 主服务(main):提供Web界面和API服务
- 工作服务(worker):处理后台任务和异步作业
- PostgreSQL数据库:持久化存储应用数据
- Redis服务:缓存和消息队列功能
详细配置解析
主服务配置
主服务暴露3000端口,提供Web访问能力。关键配置包括:
- 构建使用项目内的Dockerfile.compose文件
- 依赖PostgreSQL和Redis服务
- 环境变量配置数据库连接、加密密钥等
- 挂载存储卷automatisch_storage用于持久化数据
main:
build:
context: ./docker
dockerfile: Dockerfile.compose
ports:
- '3000:3000'
environment:
- HOST=localhost
- PROTOCOL=http
- PORT=3000
- APP_ENV=production
工作服务配置
工作服务与主服务共享代码基础,通过WORKER环境变量区分角色:
- 不暴露端口,仅处理后台任务
- 依赖主服务启动完成
- 使用相同的数据库和Redis配置
- 共享存储卷确保文件访问一致性
worker:
environment:
- WORKER=true
数据库服务
采用PostgreSQL 14.5版本,配置了:
- 自动初始化数据库和用户
- 数据持久化到postgres_data卷
- 健康检查确保服务可用性
postgres:
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}']
Redis服务
使用Redis 7.0.4版本:
- 数据持久化到redis_data卷
- 作为消息队列和缓存使用
关键环境变量
项目运行依赖几个重要环境变量:
- ENCRYPTION_KEY:数据加密密钥
- WEBHOOK_SECRET_KEY:Webhook验证密钥
- APP_SECRET_KEY:应用会话加密密钥
这些敏感信息建议通过外部方式注入,不应硬编码在配置文件中。
数据持久化方案
配置了三个持久化卷:
- automatisch_storage:应用文件存储
- postgres_data:数据库数据
- redis_data:Redis缓存数据
确保服务重启后数据不丢失。
部署实践建议
- 生产环境调整:将HOST和PROTOCOL改为实际域名和HTTPS
- 资源限制:为各服务添加CPU和内存限制
- 密钥管理:使用Docker secret或外部配置管理敏感信息
- 监控集成:添加Prometheus等监控组件
- 日志收集:配置ELK等日志系统
扩展思考
该架构展示了典型Web应用的Docker化部署模式,可以学习到:
- 前后台服务分离设计
- 有状态服务的健康检查机制
- 微服务间的依赖管理
- 配置与代码分离的最佳实践
通过理解这个部署方案,开发者可以将其应用到其他类似项目的容器化部署中。