首页
/ Crater项目Docker容器化部署指南

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驱动,适合单主机部署场景

数据持久化方案

系统提供了两种数据持久化方案:

  1. Docker卷方式(默认启用)

    • 使用名为db的Docker卷存储数据库数据
    • 管理简单,适合大多数场景
  2. 主机目录方式(需手动启用)

    • 将数据库数据存储在主机./docker-compose/db/data目录
    • 便于直接访问和备份数据文件
    • 需要取消注释相应配置并注释掉卷配置

部署步骤

  1. 确保docker-compose.yml文件在项目根目录
  2. 执行命令启动服务:
    docker-compose up -d
    
  3. 等待所有容器启动完成
  4. 访问http://localhost即可进入系统

常见问题处理

  1. 端口冲突:如果80或33006端口被占用,可修改docker-compose.yml中的端口映射配置
  2. 文件权限问题:确保项目目录对crater-user用户可读写
  3. 数据库连接失败:检查db服务是否正常启动,确认环境变量配置正确

生产环境建议

对于生产环境部署,建议考虑以下优化:

  1. 使用更具体的镜像标签而非latest
  2. 配置资源限制(CPU、内存)
  3. 设置日志轮转策略
  4. 考虑使用TLS加密通信
  5. 实现定期备份策略

通过本文介绍的Docker Compose配置,开发者可以快速搭建Crater项目的完整运行环境,无论是用于开发测试还是生产部署,都能获得一致的运行体验。