env.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. //docker环境下自动安装逻辑
  3. $MYSQL_HOST = getenv("MYSQL_HOST");
  4. $MYSQL_PORT = getenv("MYSQL_PORT");
  5. $MYSQL_USER = getenv("MYSQL_USER");
  6. $MYSQL_PASSWORD = getenv("MYSQL_PASSWORD");
  7. $MYSQL_DATABASE = getenv("MYSQL_DATABASE");
  8. $ADMIN_USER = getenv("ADMIN_USER");
  9. $ADMIN_PASSWORD = getenv("ADMIN_PASSWORD");
  10. if (empty($ADMIN_PASSWORD)) {
  11. $ADMIN_PASSWORD = '123456';
  12. }
  13. if (empty($ADMIN_USER)) {
  14. $ADMIN_USER = 'admin';
  15. }
  16. if (empty($MYSQL_PORT)) {
  17. $MYSQL_PORT = 3306;
  18. }
  19. $status = false;
  20. if ($MYSQL_HOST && $MYSQL_PORT && $MYSQL_USER && $MYSQL_PASSWORD && $MYSQL_DATABASE && $ADMIN_USER && $ADMIN_PASSWORD) {
  21. print_r("开始安装\n");
  22. $conn = new mysqli($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, null, (int)$MYSQL_PORT);
  23. if ($conn->connect_error) {
  24. die('数据库连接失败');
  25. }
  26. $sql = "CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE";//创建新的
  27. if ($conn->query($sql) !== TRUE) {
  28. $error = '数据表创建失败';
  29. }
  30. print_r("数据库创建完毕\n");
  31. $conn = new mysqli($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, (int)$MYSQL_PORT);
  32. $sql_file_content = file_get_contents('/app/install.sql');
  33. // 解析SQL文件内容并执行
  34. $sql_statements = explode(';', trim($sql_file_content));
  35. foreach ($sql_statements as $sql_statement) {
  36. if (!empty($sql_statement)) {
  37. $conn->query($sql_statement);
  38. }
  39. }
  40. //默认的一些基础数据
  41. $sql_file_content = file_get_contents('/app/defaultData.sql');
  42. // 解析SQL文件内容并执行
  43. $sql_statements = explode(';', trim($sql_file_content));
  44. foreach ($sql_statements as $sql_statement) {
  45. if (!empty($sql_statement)) {
  46. $conn->query($sql_statement);
  47. }
  48. }
  49. print_r("数据表创建完毕\n");
  50. $admin_password = md5($ADMIN_PASSWORD);
  51. //添加默认管理员
  52. $AdminSql = ("
  53. INSERT INTO user (mail, password, create_time, login_ip, register_ip, manager, login_fail_count, login_time)
  54. VALUES ('$ADMIN_USER', '$admin_password', null, null, null, 1, DEFAULT, null);
  55. ");
  56. $conn->query($AdminSql);
  57. $conn->close();
  58. print_r("管理员账号创建完毕 账号$ADMIN_USER 密码$ADMIN_PASSWORD\n");
  59. file_put_contents('/app/public/installed.lock', 'installed');
  60. //写入安装标识
  61. $status = true;
  62. }
  63. //如果有环境变量则自动安装,没有则手动安装
  64. if ($status) {
  65. $env = <<<EOF
  66. APP_DEBUG = false
  67. [APP]
  68. [DATABASE]
  69. TYPE = mysql
  70. HOSTNAME = {$MYSQL_HOST}
  71. DATABASE = {$MYSQL_DATABASE}
  72. USERNAME = {$MYSQL_USER}
  73. PASSWORD = {$MYSQL_PASSWORD}
  74. HOSTPORT = {$MYSQL_PORT}
  75. CHARSET = utf8mb4
  76. DEBUG = false
  77. [CACHE]
  78. DRIVER = file
  79. EOF;
  80. file_put_contents('/app/.env', $env);
  81. }
  82. print_r("安装完毕\n");