CaiWuXiTong/LOCAL_DEPLOY.md
15061959991 1adf627c0d feat: 财务系统二次开发 - 营销账户账单功能
- 基础环境:Docker 部署配置,源码挂载实时同步
- 修复:super_admin 权限补全、登录重定向循环
- 开发:店铺营销账户账单 - 抖音账户(15字段汇总账单)
- 开发:店铺营销账户账单 - 淘系支付宝账户(8字段流水账单)
- 开发:店铺营销账户账单 - 拼多多账户(7字段流水账单)
- 业务页面导航集成:config/business_navigation.php + Business\Pages 控制器
- 各平台独立表结构和视图,互不影响
2026-07-21 18:43:52 +08:00

4.6 KiB
Raw Blame History

CaiWuXiTong 本地部署说明

项目概况

  • 基于 Akaunting 二次开发的"江陵"版财务系统
  • 技术栈:PHP 8.3 + Laravel + Vue + Apache + MySQL 8.0
  • 访问端口:18088

文件清单(本地部署新增)

文件 作用
docker-compose.local.yml 本地 compose:app + mysql,bridge 网络
deploy/Dockerfile.local 本地 Dockerfile:基于原 Dockerfile,增加 composer/npm 依赖安装
deploy/local-init.sh 一键构建+启动+初始化脚本
runtime/.env 应用环境配置(挂载到容器 /var/www/html/.env)
LOCAL_DEPLOY.md 本说明

原 compose.jiangling.yml / deploy/Dockerfile 未改动,保留团队主线一致性。

一键部署

cd CaiWuXiTong_src
bash deploy/local-init.sh

手动步骤

# 1. 启动
docker compose -f docker-compose.local.yml up -d --build

# 2. 初始化数据库与管理员
docker compose -f docker-compose.local.yml exec app \
    php artisan install --no-interaction \
        --db-host=mysql --db-name=akaunting \
        --db-username=akaunting --db-password=akaunting123 \
        --admin-email=admin@company.com --admin-password=admin123 \
        --locale=zh-CN

# 3. 访问
open http://127.0.0.1:18088

登录信息

常用维护命令

# 查看日志
docker compose -f docker-compose.local.yml logs -f app

# 重启
docker compose -f docker-compose.local.yml restart app

# 进入容器
docker compose -f docker-compose.local.yml exec app bash

# 进入 MySQL
docker compose -f docker-compose.local.yml exec mysql mysql -uakaunting -pakaunting123 akaunting

# 清缓存
docker compose -f docker-compose.local.yml exec app php artisan optimize:clear

# 重新迁移
docker compose -f docker-compose.local.yml exec app php artisan migrate --force

# 停止 / 启动 / 销毁
docker compose -f docker-compose.local.yml stop
docker compose -f docker-compose.local.yml start
docker compose -f docker-compose.local.yml down          # 仅停容器
docker compose -f docker-compose.local.yml down -v       # 同时删除数据卷(会清空数据库!)

端口映射

服务 宿主机端口 容器端口
Akaunting (Apache) 18088 18088
MySQL 13306 3306

数据卷

  • jiangling_storage —— 应用上传文件、日志、缓存
  • jiangling_mysql —— MySQL 数据文件

注意事项

  • 修改 .env 后需重启 app 容器:docker compose -f docker-compose.local.yml restart app
  • 修改源码后需重新构建:docker compose -f docker-compose.local.yml up -d --build app
  • 此本地配置仅供开发/测试,不要用于生产(密码弱、APP_DEBUG=true)

重要:DB_PREFIX 必须用短前缀

项目某个模块迁移创建了较长的唯一索引 (ec_stores_company_id_channel_id_external_id_deleted_at_unique,60 字符), MySQL 标识符上限 64 字符,所以 DB_PREFIX 必须 ≤ 4 字符。本部署用 a_。

⚠️ 不要让 php artisan install 自动生成前缀(它默认用 str_random(3) . '_' 是 4 字符, 刚好不超),但首次 install 必须显式传 --db-prefix=a_ 或其他 ≤4 字符值, 否则可能随机到 5+ 字符前缀触发 1059 错误。

重置数据(清空重来)

docker compose -f docker-compose.local.yml exec mysql \
    mysql -uroot -prootpass -e "DROP DATABASE IF EXISTS akaunting; CREATE DATABASE akaunting CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

docker compose -f docker-compose.local.yml exec app php artisan install --no-interaction \
    --db-host=mysql --db-name=akaunting \
    --db-username=akaunting --db-password=akaunting123 \
    --db-prefix=a_ \
    --company-name="本地测试公司" --company-email=admin@company.com \
    --admin-email=admin@company.com --admin-password=admin123 \
    --locale=zh-CN

部署中遇到并已解决的问题(备忘)

  1. Docker Hub 国内访问:daemon.json 配置 https://docker.1ms.run 镜像源
  2. containerd snapshotter 导致 binary 全 0 字节:在 Docker Desktop 设置里关闭 UseContainerdSnapshotter,改用 overlay2
  3. apt 交互卡住:Dockerfile 加 DEBIAN_FRONTEND=noninteractive + /etc/apt/apt.conf.d/99force-conf
  4. deb.debian.org 不稳:Dockerfile 切到清华 Debian 镜像
  5. node-sass 需要 python/make/g++:Dockerfile 补装 python3 make g++
  6. npm run prod OOM:改用 npm run dev + NODE_OPTIONS=--max-old-space-size=2048
  7. ec_stores 索引名超长:用 --db-prefix=a_(见上)