Trae 添加项目规则,快速完成crmeb项目本地开发环境搭建


description: 陀螺匠项目Docker Compose开发环境构建规范与最佳实践

ruleType: manual

globs:

  • "docker-compose-dev/*.yml"
    alwaysApply: false

Docker Compose 开发环境构建规范(CRMEB项目)

项目概述

  • 项目名称: CRMEB 商城系统
  • 技术栈: ThinkPHP 6.x + Workerman + PHP 7.4 + MySQL 5.7 + Redis + Nginx
  • 架构: 标准接口、前后端分离、微服务容器化

目录结构

复制代码
docker-compose-dev/
├── mysql/                    # MySQL 容器配置
│   ├── data/                 # MySQL 数据目录
│   └── my.cnf                # MySQL 配置文件
├── nginx/                    # Nginx 容器配置
│   └── vhost.conf            # Nginx 虚拟主机配置
├── php/                      # PHP 容器配置
│   ├── php-ini-overrides.ini # PHP 配置覆盖文件
│   └── supervisord.conf      # Supervisor 配置文件
├── redis/                    # Redis 容器配置
│   └── redis.conf            # Redis 配置文件
├── docker-compose.build.yml  # 本地构建环境编排文件
└── README.md                 # 根目录说明文档

网络配置

yaml 复制代码
networks:
  app_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.10.0/24

服务IP分配:MySQL: 192.168.10.11 | Redis: 192.168.10.10 | PHP: 192.168.10.90 | Nginx: 192.168.10.80

端口映射

服务 容器端口 宿主机端口 说明
Nginx 80 8011 HTTP访问
MySQL 3306 33061 数据库
Redis 6379 63791 缓存服务
PHP-FPM 9000 9000 PHP-FPM 服务
Swoole 40001, 40002 40001, 40002 Swoole 服务

环境变量

MySQL

yaml 复制代码
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_USER: crmeb
MYSQL_PASSWORD: 123456
MYSQL_DATABASE: crmeb

Redis

yaml 复制代码
TZ: Asia/Shanghai
REDIS_PASSWORD: 123456

PHP

yaml 复制代码
TZ: Asia/Shanghai
MYSQL_HOST_IP: crmeb_mysql
MYSQL_PORT: "3306"
MYSQL_USER: crmeb
MYSQL_PASSWORD: 123456
MYSQL_DATABASE: crmeb
REDIS_HOST_IP: crmeb_redis
REDIS_PORT: "6379"
REDIS_DATABASE: "0"
REDIS_PASSWORD: 123456
APP_DEBUG: true
DEFAULT_TIMEZONE: Asia/Shanghai

Nginx

yaml 复制代码
TZ: Asia/Shanghai

数据持久化

yaml 复制代码
# MySQL
- ./mysql/data:/var/lib/mysql
- ./mysql/log:/var/log/mysql
- ./mysql/my.cnf:/etc/mysql/my.cnf

# PHP
- ../crmeb:/var/www
- ../crmeb/runtime:/var/www/runtime

# Nginx
- ./nginx/vhost.conf:/etc/nginx/conf.d/default.conf
- ./nginx/log:/etc/nginx/log

健康检查

MySQL

yaml 复制代码
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 30s
timeout: 10s
retries: 3

Redis

yaml 复制代码
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3

PHP

yaml 复制代码
test: ["CMD", "curl", "-f", "http://localhost:40001"]
interval: 30s
timeout: 10s
retries: 3

Nginx

yaml 复制代码
test: ["CMD", "nginx", "-t"]
interval: 30s
timeout: 10s
retries: 3

服务依赖

yaml 复制代码
# 启动顺序: MySQL/Redis -> PHP -> Nginx
phpfpm:
  depends_on:
    - mysql
    - redis

nginx:
  depends_on:
    - phpfpm

常用命令

bash 复制代码
# 进入 docker-compose-dev 目录
cd docker-compose-dev

# 启动/停止/重启
docker-compose -f docker-compose.build.yml up -d
docker-compose -f docker-compose.build.yml down
docker-compose -f docker-compose.build.yml restart

# 查看日志
docker-compose -f docker-compose.build.yml logs -f [服务名]

# 单独服务操作
docker-compose -f docker-compose.build.yml up -d mysql
docker-compose -f docker-compose.build.yml stop mysql
docker-compose -f docker-compose.build.yml restart mysql

# 进入容器
docker exec -it crmeb_mysql bash
docker exec -it crmeb_redis redis-cli
docker exec -it crmeb_php bash
docker exec -it crmeb_nginx bash

故障排查

服务无法启动

bash 复制代码
# 查看容器日志
docker-compose -f docker-compose.build.yml logs -f [服务名]

# 查看容器状态
docker-compose -f docker-compose.build.yml ps

# 检查端口占用
netstat -tlnp | grep [端口号]

# 检查容器状态
docker ps -a

数据库连接失败

bash 复制代码
# 进入 MySQL 容器
docker exec -it crmeb_mysql bash

# 登录 MySQL
mysql -u root -p

# 检查 PHP 容器中的数据库连接配置
docker exec -it crmeb_php cat /var/www/.env

# 测试 PHP 容器到 MySQL 容器的网络连接
docker exec -it crmeb_php ping crmeb_mysql

权限问题

bash 复制代码
# 检查目录权限
chmod -R 777 ../crmeb/runtime ../crmeb/public ../crmeb/backup ./mysql/data

# 检查容器内权限
docker exec -it crmeb_php chmod -R 755 /var/www/runtime /var/www/public /var/www/backup

网络问题

bash 复制代码
# 重启容器
docker-compose -f docker-compose.build.yml down
docker-compose -f docker-compose.build.yml up -d

# 检查容器网络
docker network inspect app_net

# 测试容器间网络连接
docker exec -it crmeb_php ping crmeb_mysql
docker exec -it crmeb_php ping crmeb_redis
docker exec -it crmeb_nginx ping crmeb_php

重构环境须知

重要 :执行 docker-compose-dev/docker-compose.build.yml 重构(重新构建)时,必须先删除以下文件/目录:

  1. 安装锁文件crmeb/public/install.lock
  2. MySQL数据目录docker-compose-dev/mysql/data/ 目录下的所有文件
bash 复制代码
# 重构前清理命令
rm -f ../crmeb/public/install.lock
rm -rf ./mysql/data/*

# 然后执行重构
cd docker-compose-dev
docker-compose -f docker-compose.build.yml down
docker-compose -f docker-compose.build.yml up -d --build

原因

  • install.lock 文件存在时,安装程序会提示"已安装",无法重新安装
  • mysql/data/ 目录保留旧数据会导致数据库状态不一致,重构后需要全新安装

开发环境初始化

bash 复制代码
cd docker-compose-dev

# 创建数据目录
mkdir -p mysql/data mysql/log redis/data redis/log nginx/log php/log
chmod -R 777 mysql/data redis/data

# 构建并启动
docker-compose -f docker-compose.build.yml build
docker-compose -f docker-compose.build.yml up -d
docker-compose -f docker-compose.build.yml ps

Docker Compose 文件说明

项目提供一个 Docker Compose 配置文件,用于本地构建环境的部署:

文件 用途 镜像来源 使用场景
docker-compose.build.yml 本地开发环境 本地 Dockerfile 构建 开发调试、修改镜像

docker-compose.build.yml(本地构建)

bash 复制代码
# 本地构建镜像(首次或修改 Dockerfile 后)
cd docker-compose-dev
docker-compose -f docker-compose.build.yml up -d --build

特点

  • 使用 build 指令从 Dockerfile 构建,方便开发调试
  • 每个服务都有独立的容器,便于单独管理和调试
  • 支持服务间的依赖关系管理
  • 提供完整的开发环境配置

访问地址

  • Nginx: http://localhost:8011
  • MySQL: localhost:33061
  • Redis: localhost:63791
  • PHP-FPM: localhost:9000
  • Swoole: localhost:40001, localhost:40002

最后更新时间 : 2026-03-25
适用版本: CRMEB 商城系统 v2.0

相关推荐
H_老邪2 小时前
Docker 学习之路-从入门到放弃-Jenkins:4
容器·jenkins
H_老邪2 小时前
Docker 学习之路-从入门到放弃:3
学习·docker·容器
F1FJJ2 小时前
Shield CLI v0.3.3 新增 PostgreSQL 插件:浏览器里管理 PG 数据库
网络·网络协议·docker·postgresql·容器·go
技术栈壳2 小时前
搭建docker hub私有仓库
运维·docker·容器
wuxia21182 小时前
云计算技术与实践(微课版)
docker·kubernetes·云计算
万象.2 小时前
docker网络种类,架构及命令
网络·docker·架构
qq_297574672 小时前
K8s系列第十五篇(终篇):K8s 集群优化实战:性能、稳定性与安全性优化
docker·容器·kubernetes
CIAS2 小时前
openclaw 扩展企业微信模块
docker·openclaw
回到原点的码农2 小时前
Node.js 与 Docker 深度整合:轻松部署与管理 Node.js 应用
docker·容器·node.js