对话笔记直发:7.17 WSL_YoShop与CRMEB_Docker手动启停部署说明。分类:小程序接单。

WSL YoShop 与 CRMEB Docker 手动操作手册

更新时间:2026-07-17。本手册适用于当前 WSL 本地测试环境,不适用于腾讯云生产服务器。

1. 当前部署结构

项目运行方式本地入口默认状态
YoShop宿主 Nginx + PHP 8.3 FPM + MariaDB + Redis + Timerhttp://wx.oiob.cn已下线,不自启动
CRMEB独立 Docker Compose(PHP 7.4/MySQL 8/Redis/Nginx)http://127.0.0.1:18081当前运行,不自启动
其他 Docker 项目独立容器,例如 zhou-web-18000不受两个控制脚本影响

CRMEB 后台入口:

http://127.0.0.1:18081/admin/

管理员凭据没有写入本手册或 Git。仅在 WSL 本机用以下命令查看:

sudo cat /opt/crmeb/admin-credentials.txt

该文件权限为 0600,请不要复制到聊天、Git 或公开目录。

2. YoShop 手动操作

启动

sudo yoshopctl start
sudo yoshopctl status

启动会检查/按需启动共享的 Nginx、PHP-FPM、MariaDB、Redis,恢复 YoShop Nginx 站点并启动 Timer。

停止

sudo yoshopctl stop
sudo yoshopctl status || true

停止只撤下 YoShop 站点并停止 Timer,不停止共享基础设施。

诊断和日志

sudo yoshopctl doctor
sudo yoshopctl logs
sudo yoshopctl logs 300

systemd 备用入口

sudo systemctl start yoshop-app.service
sudo systemctl stop yoshop-app.service
systemctl status yoshop-app.service

确认不自启动

systemctl is-enabled yoshop-app.service
systemctl is-enabled yoshop2.0-timer.service

两项均应为 disabled。

3. CRMEB 手动操作

启动

sudo crmebctl start
sudo crmebctl status

停止(保留数据库和上传数据)

sudo crmebctl stop
sudo crmebctl status || true

普通 stop 只停止容器,绝不删除容器、network 或 volume。

重启、诊断和日志

sudo crmebctl restart
sudo crmebctl doctor
sudo crmebctl logs
sudo crmebctl logs 300

Compose 原生命令(只在排障时使用)

必须固定 project、env 和文件路径,避免操作其他项目:

sudo docker compose \
  --project-name crmeb-local \
  --env-file /opt/crmeb/.env \
  --file /opt/crmeb/compose.yaml \
  ps

不要运行 CRMEB 上游的 help/docker/run.sh;其中包含宽泛的 Docker 网络清理和删除数据行为。

4. CRMEB 文件与数据位置

/opt/crmeb/app/                 CRMEB Git 源码(固定上游 commit)
/opt/crmeb/compose.yaml         本机安全 Compose
/opt/crmeb/config/nginx.conf    容器 Nginx 配置
/opt/crmeb/.env                 Compose 密钥,0600
/opt/crmeb/admin-credentials.txt 管理员凭据,0600
/opt/crmeb/bin/crmebctl         控制脚本

Docker 持久卷:

docker volume ls | grep '^local.*crmeb-local_'

预期包含:

crmeb-local_mysql-data
crmeb-local_redis-data

上传和 runtime 当前位于源码挂载目录:

/opt/crmeb/app/crmeb/public/uploads
/opt/crmeb/app/crmeb/runtime

5. 端口隔离

端口用途
80宿主 Nginx;CRMEB 不占用
3306宿主 MariaDB;CRMEB MySQL 不暴露宿主端口
6379宿主 Redis;CRMEB Redis 不暴露宿主端口
8000现有 zhou-web-1;CRMEB 不占用
18081CRMEB Web,仅绑定 127.0.0.1

CRMEB PHP-FPM、MySQL、Redis、Workerman 只在 crmeb-local Docker 网络内通信。

6. 自启动策略

CRMEB 所有容器的 restart policy 均为 no。Docker/WSL 重启后不会自动恢复 CRMEB;需要执行:

sudo crmebctl start

YoShop 同样保持 disabled,需要执行:

sudo yoshopctl start

不要为了关闭某个项目 disable Docker、Nginx、MariaDB 或 Redis,它们属于共享基础设施。

7. 建议的日常顺序

只使用 CRMEB

sudo yoshopctl stop
sudo crmebctl start
sudo crmebctl status

只使用 YoShop

sudo crmebctl stop
sudo yoshopctl start
sudo yoshopctl status

两者同时运行

端口和数据库已经隔离,可以同时启动:

sudo yoshopctl start
sudo crmebctl start

8. 数据备份

在重要配置或二次开发前,至少备份 CRMEB 数据库和 uploads。

数据库导出

sudo install -d -m 0700 /opt/crmeb/backups
sudo bash -c 'set -a; source /opt/crmeb/.env; set +a; \
  docker exec crmeb-local-mysql-1 mysqldump \
    -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" \
    --single-transaction "$MYSQL_DATABASE" \
    > "/opt/crmeb/backups/crmeb-$(date +%Y%m%d-%H%M%S).sql"'

上传文件备份

sudo tar -C /opt/crmeb/app/crmeb/public \
  -czf "/opt/crmeb/backups/uploads-$(date +%Y%m%d-%H%M%S).tar.gz" uploads

数据库恢复会覆盖数据,必须另行确认并先保留当前备份;不要把恢复命令做成无确认的一键操作。

9. 常见检查

sudo crmebctl doctor
sudo crmebctl status
curl -I http://127.0.0.1:18081/
docker compose --project-name crmeb-local \
  --env-file /opt/crmeb/.env \
  --file /opt/crmeb/compose.yaml ps

若页面出现 500:

sudo crmebctl logs 300
sudo find /opt/crmeb/app/crmeb/runtime -type f -name '*.log' -print

若 runtime 出现权限错误:

sudo chown -R 33:33 /opt/crmeb/app/crmeb/runtime /opt/crmeb/app/crmeb/public/uploads
sudo find /opt/crmeb/app/crmeb/runtime /opt/crmeb/app/crmeb/public/uploads \
  -type d -exec chmod 0770 {} +
sudo find /opt/crmeb/app/crmeb/runtime /opt/crmeb/app/crmeb/public/uploads \
  -type f -exec chmod 0660 {} +
sudo crmebctl restart

10. 禁止事项

  • 不要把 /opt/crmeb/.env 或管理员凭据提交 Git。
  • 不要把 CRMEB 映射到宿主 80/3306/6379。
  • 不要运行 docker network prune 或不带 project 限定的宽泛清理命令。
  • 不要执行 docker compose down -v,除非已经备份且明确要永久删除数据库。
  • 不要用停止 Docker 的方式停止 CRMEB,这会影响 zhou-web-1 等其他容器。


相关: 00-索引-小程序接单索引 7.16 YoShop服务订单权限、版权移除与WSL云端发布收口