Crater项目Docker容器化部署指南
2025-07-07 02:20:21作者:滕妙奇
项目概述
Crater是一个开源的发票和财务管理应用系统,采用现代化的技术架构构建。本文主要讲解如何使用Docker Compose工具来容器化部署Crater项目,帮助开发者快速搭建开发和生产环境。
环境准备
在开始部署前,请确保你的系统已经安装以下组件:
- Docker引擎(版本17.12.0+)
- Docker Compose工具(版本1.21.0+)
核心服务解析
1. 应用服务(app)
应用服务是Crater系统的核心,基于PHP构建。在docker-compose.yml中配置如下特点:
- 使用自定义构建的Docker镜像(crater-php)
- 指定了非root用户(crater-user)运行,提高安全性
- 挂载项目目录到容器内/var/www路径
- 通过uploads.ini配置文件调整PHP上传参数
- 使用unless-stopped重启策略确保服务稳定性
2. 数据库服务(db)
数据库服务采用MariaDB作为存储引擎,关键配置包括:
- 使用官方MariaDB镜像
- 通过volume实现数据持久化(可选择主机目录或Docker卷)
- 预设了数据库用户、密码和数据库名称
- 将3306端口映射到主机的33006端口
- 配置了root密码和普通用户权限
3. Web服务器(nginx)
Nginx作为前端Web服务器,配置特点:
- 使用轻量级的nginx:1.17-alpine镜像
- 映射80端口到主机
- 挂载自定义Nginx配置到容器内
- 同样挂载项目代码到容器内
4. 定时任务服务(cron)
Crater系统需要定时执行一些后台任务,该服务特点:
- 使用自定义Dockerfile构建
- 挂载项目代码到容器内
- 通过cron.dockerfile定义具体定时任务
网络配置
所有服务都连接到名为crater的自定义桥接网络,这种配置:
- 允许容器间通过服务名互相访问
- 提供隔离的网络环境
- 使用bridge驱动,适合单主机部署场景
数据持久化方案
系统提供了两种数据持久化方案:
-
Docker卷方式(默认启用)
- 使用名为db的Docker卷存储数据库数据
- 管理简单,适合大多数场景
-
主机目录方式(需手动启用)
- 将数据库数据存储在主机./docker-compose/db/data目录
- 便于直接访问和备份数据文件
- 需要取消注释相应配置并注释掉卷配置
部署步骤
- 确保docker-compose.yml文件在项目根目录
- 执行命令启动服务:
docker-compose up -d
- 等待所有容器启动完成
- 访问http://localhost即可进入系统
常见问题处理
- 端口冲突:如果80或33006端口被占用,可修改docker-compose.yml中的端口映射配置
- 文件权限问题:确保项目目录对crater-user用户可读写
- 数据库连接失败:检查db服务是否正常启动,确认环境变量配置正确
生产环境建议
对于生产环境部署,建议考虑以下优化:
- 使用更具体的镜像标签而非latest
- 配置资源限制(CPU、内存)
- 设置日志轮转策略
- 考虑使用TLS加密通信
- 实现定期备份策略
通过本文介绍的Docker Compose配置,开发者可以快速搭建Crater项目的完整运行环境,无论是用于开发测试还是生产部署,都能获得一致的运行体验。