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

相关推荐
云原生指北9 分钟前
Docker Sandboxes 工作区怎么接:Direct、Clone 和它们的边界
git·docker·agent
玉宇夕落1 小时前
Docker + Nginx + Node.js 容器化部署 —— 从零到一理解反向代理与容器化原理
docker
ly76892 小时前
Docker 从入门到实践:镜像、容器、Dockerfile 与 Docker Compose 详解
运维·docker·容器
梦梦代码精3 小时前
基于UniApp+Vue3+ThinkPHP 8,这套知识付费系统的架构设计有点东西
java·低代码·docker·uni-app·开源·php
盗道3 小时前
用 TRAE Work 自动处理 Excel + 企业微信批量发送,再也不用一个个手动截图了
trae
moMo6 小时前
从“巨轮”到“本地开发”:用 Docker 和 Nginx 解决你的端口焦虑
nginx·docker
有脚就行6 小时前
第33篇-KServe推理平台-标准化的K8s推理服务管理
人工智能·云原生·容器·kubernetes
名字还没想好☜7 小时前
Kubernetes StatefulSet 实战:为什么数据库不能用 Deployment 部署
数据库·云原生·容器·kubernetes·statefulset
地衣君7 小时前
Hermes Docker 容器交互一些技巧
docker·hermes
智码看视界8 小时前
Day53-Docker:Dockerfile最佳实践 + 多阶段构建 + docker-compose编排
java·spring boot·docker·docker-compose·dockerfile·容器化部署·多阶段构建