首页
/ Personal Management System 项目 Docker 部署指南

Personal Management System 项目 Docker 部署指南

2025-07-09 07:17:39作者:袁立春Spencer

项目概述

Personal Management System (PMS) 是一个基于容器的个人管理系统,采用现代化的技术栈构建,包括 PHP、Nginx、MariaDB 等组件。本文将详细解析其 Docker Compose 配置文件,帮助开发者理解系统架构并完成部署。

核心服务解析

1. 数据库服务 (MariaDB)

pms-database-mariadb:
  image: mariadb:11.5.2
  container_name: pms-database-mariadb
  hostname: pms-database-mariadb
  restart: always
  tty: true
  environment:
    - MYSQL_DATABASE=pms
    - MYSQL_ROOT_PASSWORD=password
  volumes:
    - database:/var/lib/mysql

技术要点:

  • 使用 MariaDB 11.5.2 官方镜像
  • 自动创建名为 pms 的数据库
  • 数据持久化通过命名卷 database 实现
  • 设置 root 密码为 password(生产环境应修改为更安全的密码)

2. Web 服务 (Nginx + PHP-FPM)

Nginx 服务

pms-nginx:
  image: yobasystems/alpine-nginx:stable
  container_name: pms-nginx
  hostname: pms-nginx
  working_dir: /application
  restart: always
  tty: true
  volumes:
    - .:/application
    - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
  ports:
    - "8002:80"

技术要点:

  • 基于 Alpine Linux 的轻量级 Nginx 镜像
  • 映射主机 8002 端口到容器 80 端口
  • 挂载自定义 Nginx 配置文件
  • 项目代码挂载到 /application 目录

PHP-FPM 服务

pms-php-fpm:
  build: ./docker/php-fpm
  container_name: pms-php-fpm
  hostname: pms-php-fpm
  entrypoint: sh -c "/usr/local/bin/docker-php-entrypoint && php-fpm -D && ./docker/php-fpm/entrypoint.bash && nano /tmp/keep"
  working_dir: /application
  restart: always
  tty: true
  depends_on:
    - pms-database-mariadb
  volumes:
    - .:/application

技术要点:

  • 使用自定义构建的 PHP-FPM 镜像
  • 复杂的 entrypoint 确保服务正确启动
  • 显式依赖数据库服务
  • 同样挂载项目代码到 /application 目录

3. 辅助服务

数据库管理工具 (Adminer)

pms-adminer:
  container_name: pms-adminer
  hostname: pms-adminer
  image: adminer:4.8.0
  restart: always
  tty: true
  ports:
    - 8081:8080

技术要点:

  • 提供 Web 界面的数据库管理工具
  • 映射到主机 8081 端口

邮件测试服务 (Mailpit)

pms-mail:
  container_name: pms-mail
  hostname: pms-mail
  restart: always
  tty: true
  command: >
    mailpit 
      --smtp-auth-allow-insecure 
      --db-file=/mailpit/mail.db
  build: ./docker/mailpit
  ports:
    - "8082:8025"
  volumes:
    - pms-mailpit-db:/mailpit/mail.db

技术要点:

  • 使用 Mailpit 作为邮件测试服务器
  • 数据持久化到命名卷 pms-mailpit-db
  • 映射到主机 8082 端口

部署实践指南

1. 准备工作

确保已安装:

  • Docker 20.10+
  • Docker Compose 1.29+

2. 部署步骤

  1. 克隆项目代码到本地
  2. 进入项目目录
  3. 执行 docker-compose up -d 启动所有服务
  4. 等待容器启动完成

3. 服务访问

  • 主应用: http://localhost:8002
  • 数据库管理: http://localhost:8081
  • 邮件测试界面: http://localhost:8082

4. 自定义配置

  1. 修改数据库密码: 在 environment 部分修改 MYSQL_ROOT_PASSWORD

  2. 调整端口映射: 根据需求修改 ports 配置

  3. Nginx 配置: 修改 ./docker/nginx/nginx.conf 文件调整 Web 服务器行为

架构设计分析

该 Docker Compose 文件展示了一个典型的三层 Web 应用架构:

  1. 数据层: MariaDB 数据库
  2. 应用层: PHP-FPM 处理业务逻辑
  3. 表现层: Nginx 作为 Web 服务器

辅助服务提供了开发和调试支持:

  • Adminer 用于数据库管理
  • Mailpit 用于邮件功能测试

常见问题解决

  1. 端口冲突:

    • 检查并修改冲突的端口映射
  2. 容器启动失败:

    • 查看日志: docker-compose logs <服务名>
    • 确保有足够的磁盘空间
  3. 数据库连接问题:

    • 检查 PHP-FPM 是否成功连接到数据库容器
    • 验证数据库凭据是否正确

安全建议

  1. 生产环境中:

    • 修改默认的数据库密码
    • 限制 Adminer 的访问权限
    • 考虑添加 TLS 加密
  2. 定期备份:

    • 数据库卷 (database)
    • 邮件数据卷 (pms-mailpit-db)

总结

Personal Management System 的 Docker Compose 配置展示了现代 Web 应用的容器化部署方式,通过合理的服务拆分和配置,实现了开发环境的快速搭建。理解这个配置文件有助于开发者根据实际需求进行调整和扩展。