diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index aeedbd2..a8dd553 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -21,7 +21,7 @@ services: volumes: - db_data:/var/lib/mysql - ./mysql/initdb/01_schema_base.sh:/docker-entrypoint-initdb.d/01_schema_base.sh:ro - - ./mysql/initdb/02_seed_admin.sql:/docker-entrypoint-initdb.d/99_seed_admin.sql:ro + - ./mysql/initdb/02_seed_admin.sh:/docker-entrypoint-initdb.d/99_seed_admin.sh:ro # 说明:compose 相对路径以 deploy/ 为基准,../ 即仓库根目录(SuperLink) - ../:/repo # 仓库根目录挂到 /repo,init 脚本 source 仓库 sql - ../sql:/repo/sql:ro diff --git a/deploy/mysql/initdb/02_seed_admin.sql b/deploy/mysql/initdb/02_seed_admin.sh similarity index 69% rename from deploy/mysql/initdb/02_seed_admin.sql rename to deploy/mysql/initdb/02_seed_admin.sh index 58ba371..dad1a66 100644 --- a/deploy/mysql/initdb/02_seed_admin.sql +++ b/deploy/mysql/initdb/02_seed_admin.sh @@ -1,12 +1,12 @@ --- ============================================================ --- SuperLink 首次初始化:种子超管角色 + 管理员账号 + 迁移版本标记 --- 由 mysql 镜像 entrypoint 在空数据卷时执行;entrypoint 已自动 USE ${MYSQL_DATABASE} --- 说明: --- - base schema(v1.0.51_base) 已内建 v1.0.16→v1.0.51 的全部业务表, --- 故在此把各迁移文件标记为"已应用",避免 tools/migrate.php up 重复执行。 --- - 管理员账号:admin / Admin@123456(bcrypt 密码,请在首次登录后立即修改) --- ============================================================ +#!/bin/bash +# SuperLink 首次初始化:种子超管角色 + 管理员账号 + 迁移版本标记 +# 采用 .sh + heredoc 方式执行(不用 .sql): +# MySQL 官方 image 的 entrypoint 处理 .sql 型 init 文件时在 set -u 下会触发 +# "line 249: $1: unbound variable" 而静默失败;.sh 型文件则稳定无误。 +# 管理员账号:admin / Admin@123456(bcrypt,建议首次登录后立即修改) +set -euo pipefail +mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" --default-character-set=utf8mb4 "${MYSQL_DATABASE}" <<'EOSQL' -- 1) 超级管理员角色:权限 = 全部业务模块(与前端菜单标识一致) INSERT INTO `system_roles` (`role_name`, `permissions`, `is_active`) SELECT '超级管理员', '["dashboard","company","person","media","need","marketing","channel","document","preliminary","system","log"]', 1 @@ -37,4 +37,7 @@ INSERT INTO `schema_versions` (`version`, `checksum`) VALUES ('v1.0.48','f507f2964d9bf7f8c885d69119c6d041'), ('v1.0.50','edaa2a71a4adf716591ece61ed9fc09f'), ('v1.0.51','3251bf0bca9236e201dc419770f7f5dc') -ON DUPLICATE KEY UPDATE `checksum` = VALUES(`checksum`); \ No newline at end of file +ON DUPLICATE KEY UPDATE `checksum` = VALUES(`checksum`); +EOSQL + +echo ">> SuperLink init: admin + roles + versions seeded" \ No newline at end of file