feat: 一键部署——配置内置默认值,去掉示例复制与环境变量
目标:git clone 后 docker compose up -d 直接可用,无需任何手工准备。
变更:
- config.example/ → config/,config.example.yaml → config.yaml
不再需要 cp -r 与逐份修改
- 删除 .env / .env.example,值全部内置到 docker-compose.yml
(GoFrame 不展开配置文件中的 ${VAR},环境变量方案在 Go 侧不可用)
- 配置文件里的 ${VAR} 全部替换为字面默认值
- schema/04-users.sh 与 05-reset-passwords.sh 改为脚本内字面口令,
不再读取环境变量
- 新增 schema/13-seed-flow-package.sql 占位文件,说明套餐表为空的原因与补齐方式
- .gitignore 不再排除 config/ 与 .env(已无 .env)
- README 改为「一键启动」+「上线前必改」两张表
已验证:docker compose config 通过;compose 口令、各配置文件 DSN、
初始化脚本三处口令哈希一致;库名与 schema 中一致。
This commit is contained in:
+16
-14
@@ -3,31 +3,33 @@
|
||||
# 业务数据库账号与附加库
|
||||
# 由 MySQL 容器 docker-entrypoint-initdb.d 在首次启动时执行。
|
||||
#
|
||||
# 为什么用 .sh 而不是 .sql:
|
||||
# MySQL 官方镜像的 initdb 脚本无法在 SQL 里读环境变量,
|
||||
# 而账号口令必须从 .env 注入,不能写死在仓库里。
|
||||
# 口令直接写在本文件(不使用环境变量)。
|
||||
# 改口令时必须同时修改以下三处,否则服务连不上库:
|
||||
# 1. docker-compose.yml 的 MYSQL_APP_PASSWORD
|
||||
# 2. config/*/config.yaml 里 database link 的口令
|
||||
# 3. 本文件下方的 APP_PASSWORD
|
||||
# ============================================================
|
||||
set -euo pipefail
|
||||
|
||||
if [ -z "${MYSQL_APP_PASSWORD:-}" ]; then
|
||||
echo "[initdb] 错误:未设置 MYSQL_APP_PASSWORD" >&2
|
||||
exit 1
|
||||
fi
|
||||
# 与 docker-compose.yml 保持一致
|
||||
APP_USER='iotlcm_app'
|
||||
APP_PASSWORD='Iotlcm2026Default'
|
||||
ROOT_PASSWORD='Iotlcm2026Default'
|
||||
DB_NAME='db_iotlcm'
|
||||
|
||||
mysql --protocol=socket -uroot -p"${MYSQL_ROOT_PASSWORD}" <<SQL
|
||||
mysql --protocol=socket -uroot -p"${ROOT_PASSWORD}" <<SQL
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 应用账号(对应各 config 文件里的数据库用户名 u_iotlcm)
|
||||
CREATE USER IF NOT EXISTS 'u_iotlcm'@'%'
|
||||
IDENTIFIED WITH mysql_native_password BY '${MYSQL_APP_PASSWORD}';
|
||||
GRANT ALL PRIVILEGES ON \`db_iotlcm\`.* TO 'u_iotlcm'@'%';
|
||||
CREATE USER IF NOT EXISTS '${APP_USER}'@'%'
|
||||
IDENTIFIED WITH mysql_native_password BY '${APP_PASSWORD}';
|
||||
GRANT ALL PRIVILEGES ON \`${DB_NAME}\`.* TO '${APP_USER}'@'%';
|
||||
|
||||
-- legacyCard 附加库(可选,不需要时删掉这三行)
|
||||
CREATE DATABASE IF NOT EXISTS \`iotdb\`
|
||||
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
GRANT ALL PRIVILEGES ON \`iotdb\`.* TO 'u_iotlcm'@'%';
|
||||
GRANT ALL PRIVILEGES ON \`iotdb\`.* TO '${APP_USER}'@'%';
|
||||
|
||||
FLUSH PRIVILEGES;
|
||||
SQL
|
||||
|
||||
echo "[initdb] 应用账号 u_iotlcm 已创建"
|
||||
echo "[initdb] 应用账号 ${APP_USER} 已创建"
|
||||
|
||||
Reference in New Issue
Block a user