3.7 KiB
3.7 KiB
ShopXO 本地开发环境部署
部署时间:2026-04-14 适用平台:macOS (Intel/Apple Silicon M1-M3)
一、快速启动
前提条件
- Docker Desktop(macOS)
- ShopXO 源码(本仓库已克隆)
一键启动
cd ~/WorkSpace/shopxo-env
./start.sh
启动后访问:http://localhost:10000
首次安装
- 浏览器打开 http://localhost:10000
- 按向导填写:
| 配置项 | 值 |
|---|---|
| 数据库地址 | mysqldb |
| 端口 | 3306 |
| 数据库名 | vrticket |
| 用户名 | shopxo_user |
| 密码 | shopxo_pass_2024 |
- 完成安装后,后台入口文件名会被随机化为
admin{随机6位}.php(如adminufgeyw.php),记录下来备用。
停止环境
docker compose -f ~/WorkSpace/shopxo-env/docker-compose.yml down
二、目录结构
~/WorkSpace/shopxo-env/
├── docker-compose.yml # 容器编排配置
├── .env # 环境变量(数据库密码)
├── start.sh # 启动脚本
├── etc/
│ ├── nginx/ # nginx 配置
│ ├── php/ # PHP 配置
│ └── db/ # MySQL 配置
└── logs/ # 日志目录(待创建)
ShopXO 源码挂载位置:
- 容器内:
/var/www/html - 本地:
${SHOPXO_SRC}环境变量指向的目录
三、容器说明
| 容器名 | 镜像 | 端口 | 说明 |
|---|---|---|---|
shopxo-web |
nginx:latest | 10000→80 | Web 服务器 |
shopxo-php |
nanoninja/php-fpm:8.1 | 9000 (内部) | PHP-FPM |
shopxo-mysql |
mysql:8.0 | 10001→3306 | 数据库 |
PHP 扩展(已预装)
pdo_mysql ✅ curl ✅ gd ✅
mbstring ✅ openssl ✅ zip ✅
修改代码后
代码通过绑定挂载直接挂到容器内,修改本地文件立即生效,无需重启容器。
如需重启 PHP:
docker compose -f ~/WorkSpace/shopxo-env/docker-compose.yml restart php
四、日志查看
# 查看所有容器日志
docker compose -f ~/WorkSpace/shopxo-env/docker-compose.yml logs -f
# 仅看 PHP 日志
docker compose -f ~/WorkSpace/shopxo-env/docker-compose.yml logs -f php
# 仅看 MySQL 日志
docker compose -f ~/WorkSpace/shopxo-env/docker-compose.yml logs -f mysqldb
五、数据库连接
从容器内连接(PHP 连接 MySQL):
主机: mysqldb(容器网络名)
端口: 3306
用户: shopxo_user
密码: shopxo_pass_2024
从宿主机连接(数据库工具):
主机: localhost
端口: 10001
用户: root
密码: shopxo_root_2024
六、修改 ShopXO 源码路径
默认挂载到:
/Users/bigemon/WorkSpace/vr-shopxo-plugin/shopxo
如需切换到其他目录,修改 ~/workspace/shopxo-env/.env:
SHOPXO_SRC=/你的/路径/shopxo-src
然后重启:
docker compose -f ~/WorkSpace/shopxo-env/docker-compose.yml restart
七、已知问题
M1/M2/M3 Mac ARM64 兼容
nanoninja/php-fpm:8.1 镜像为 AMD64,通过 Rosetta2 模拟运行。功能正常,但性能略低于原生 ARM64 镜像。
未来可选方案:如有性能需求,可研究支持 ARM64 的 PHP-FPM 镜像(如 php:8.1-fpm-alpine)。
MySQL 配置文件
etc/db/my.cnf 已针对 MySQL 8.0 优化,移除了 NO_AUTO_CREATE_USER(MySQL 8.0 已移除)。
八、环境完整性验证
# 1. 检查容器运行状态
docker ps --filter "name=shopxo"
# 2. 验证 PHP
docker exec shopxo-php php -v
# 3. 验证 MySQL 连接
docker exec shopxo-php php -r "new PDO('mysql:host=mysqldb', 'shopxo_user', 'shopxo_pass_2024');"
# 4. 验证 Web 访问
curl -s -o /dev/null -w "%{http_code}" http://localhost:10000/
# 期望输出: 302 (重定向到安装向导) 或 200