diff --git a/backend/conf/env.example.py b/backend/conf/env.example.py index bf015db..3d1db25 100644 --- a/backend/conf/env.example.py +++ b/backend/conf/env.example.py @@ -21,13 +21,15 @@ DATABASE_PORT = 3306 # # 数据库用户名 DATABASE_USER = "root" # # 数据库密码 -DATABASE_PASSWORD = "DVADMIN3" +DATABASE_PASSWORD = 'DVADMIN3' # 表前缀 TABLE_PREFIX = "dvadmin_" # ================================================= # # ******** redis配置,无redis 可不进行配置 ******** # # ================================================= # +REDIS_DB = 1 +CELERY_BROKER_DB = 3 REDIS_PASSWORD = 'DVADMIN3' REDIS_HOST = '127.0.0.1' REDIS_URL = f'redis://:{REDIS_PASSWORD or ""}@{REDIS_HOST}:6379' diff --git a/backend/dvadmin/system/models.py b/backend/dvadmin/system/models.py index 6767877..0e29403 100644 --- a/backend/dvadmin/system/models.py +++ b/backend/dvadmin/system/models.py @@ -485,7 +485,7 @@ class SystemConfig(CoreModel): help_text="父级", ) title = models.CharField(max_length=50, verbose_name="标题", help_text="标题") - key = models.CharField(max_length=20, verbose_name="键", help_text="键", db_index=True) + key = models.CharField(max_length=100, verbose_name="键", help_text="键", db_index=True) value = models.JSONField(max_length=100, verbose_name="值", help_text="值", null=True, blank=True) sort = models.IntegerField(default=0, verbose_name="排序", help_text="排序", blank=True) status = models.BooleanField(default=True, verbose_name="启用状态", help_text="启用状态") diff --git a/docker-compose.yml b/docker-compose.yml index c08a0ef..70f9271 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -50,7 +50,7 @@ services: ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD: "DVADMIN3" + MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD} MYSQL_DATABASE: "django-vue3-admin" TZ: Asia/Shanghai command: @@ -101,7 +101,7 @@ services: - "6379:6379" sysctls: # 设置容器中的内核参数 - net.core.somaxconn=1024 - command: /bin/sh -c "echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf && redis-server /etc/redis/redis.conf --appendonly yes --requirepass DVADMIN3" # 指定配置文件并开启持久化 + command: /bin/sh -c "echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf && redis-server /etc/redis/redis.conf --appendonly yes --requirepass ${MYSQL_PASSWORD}" # 指定配置文件并开启持久化 privileged: true # 使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限 networks: network: diff --git a/docker_env/django/Dockerfile b/docker_env/django/Dockerfile index 7acd383..427ed0c 100644 --- a/docker_env/django/Dockerfile +++ b/docker_env/django/Dockerfile @@ -3,7 +3,7 @@ WORKDIR /backend COPY ./backend/ . RUN ls ./conf/ RUN awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' -RUN sed -i "s|DATABASE_HOST = "127.0.0.1"|DATABASE_HOST = '177.10.0.1'|g" ./conf/env.py +RUN sed -i "s|DATABASE_HOST = '127.0.0.1'|DATABASE_HOST = '177.10.0.1'|g" ./conf/env.py RUN sed -i "s|REDIS_HOST = '127.0.0.1'|REDIS_HOST = '177.10.0.1'|g" ./conf/env.py RUN python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt CMD ["/backend/docker_start.sh"] diff --git a/docker_env/mysql/conf.d/my.cnf b/docker_env/mysql/conf.d/my.cnf index b9525ed..469af8b 100644 --- a/docker_env/mysql/conf.d/my.cnf +++ b/docker_env/mysql/conf.d/my.cnf @@ -1,7 +1,7 @@ [mysql] #设置mysql客户端默认字符集 default-character-set=utf8 -socket=/var/run/mysql/mysql.sock +socket=/var/lib/mysql/mysql.sock [mysqld] @@ -9,7 +9,7 @@ socket=/var/run/mysql/mysql.sock #mysql5.7以后的不兼容问题处理 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES datadir=/var/lib/mysql -socket=/var/run/mysql/mysql.sock +socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 @@ -30,4 +30,4 @@ default-time_zone='+8:00' [mysqld_safe] log-error=/var/log/mariadb/mariadb.log -pid-file=/var/run/mariadb/mariadb.pid +pid-file=/var/lib/mariadb/mariadb.pid diff --git a/init.sh b/init.sh new file mode 100644 index 0000000..8c377ed --- /dev/null +++ b/init.sh @@ -0,0 +1,31 @@ +#!/bin/bash +ENV_FILE=".env" +# 检查 .env 文件是否存在 +if [ -f "$ENV_FILE" ]; then + echo "$ENV_FILE 文件已存在。" +else + # 生成MYSQL随机密码 + MYSQL_PASSWORD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 18) + echo "MYSQL_PASSWORD=$MYSQL_PASSWORD" >> "$ENV_FILE" + echo "MYSQL随机密码已生成并写入 $ENV_FILE 文件。" + # 生成REDIS随机密码 + REDIS_PASSWORD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12) + # 将密码写入 .env 文件 + echo "REDIS_PASSWORD=$REDIS_PASSWORD" >> "$ENV_FILE" + echo "REDIS随机密码已生成并写入 $ENV_FILE 文件。" + + awk 'BEGIN { cmd="cp -i ./backend/conf/env.example.py ./backend/conf/env.py "; print "n" |cmd; }' + sed -i "s|DATABASE_HOST = '127.0.0.1'|DATABASE_HOST = '177.10.0.13'|g" ./backend/conf/env.py + sed -i "s|REDIS_HOST = '127.0.0.1'|REDIS_HOST = '177.10.0.15'|g" ./backend/conf/env.py + sed -i "s|DATABASE_PASSWORD = 'DVADMIN3'|DATABASE_PASSWORD = '$MYSQL_PASSWORD'|g" ./backend/conf/env.py + sed -i "s|REDIS_PASSWORD = 'DVADMIN3'|REDIS_PASSWORD = '$REDIS_PASSWORD'|g" ./backend/conf/env.py + echo "初始化密码创建成功" +fi + +docker-compose up -d +docker exec dvadmin3-django python manage.py makemigrations +docker exec dvadmin3-django python manage.py migrate +docker exec dvadmin3-django python manage.py init +echo "欢迎使用dvadmin3项目" +echo "登录地址:http://ip:8080" +echo "如访问不到,请检查防火墙配置" diff --git a/web/package.json b/web/package.json index 956d682..ac89be4 100644 --- a/web/package.json +++ b/web/package.json @@ -10,10 +10,11 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.0.10", - "@fast-crud/fast-crud": "^1.19.2", - "@fast-crud/fast-extends": "^1.19.2", - "@fast-crud/ui-element": "^1.19.2", - "@fast-crud/ui-interface": "^1.19.2", + "@fast-crud/fast-crud": "^1.20.1", + "@fast-crud/fast-extends": "^1.20.1", + "@fast-crud/ui-element": "^1.20.1", + "@fast-crud/ui-interface": "^1.20.1", + "@iconify/vue": "^4.1.1", "@types/lodash": "^4.14.202", "@vitejs/plugin-vue-jsx": "^3.0.0", "@wangeditor/editor": "^5.1.23", @@ -22,7 +23,7 @@ "axios": "^1.2.1", "countup.js": "^2.3.2", "cropperjs": "^1.5.13", - "e-icon-picker": "^2.1.1", + "e-icon-picker": "^2.2.0", "echarts": "^5.4.1", "echarts-gl": "^2.0.9", "echarts-wordcloud": "^2.1.0", @@ -32,6 +33,7 @@ "js-cookie": "^3.0.1", "js-table2excel": "^1.0.3", "jsplumb": "^2.15.6", + "lodash-es": "^4.17.21", "mitt": "^3.0.0", "nprogress": "^0.2.0", "pinia": "^2.0.28", diff --git a/web/src/layout/logo/index.vue b/web/src/layout/logo/index.vue index 99bf7da..1a656bb 100644 --- a/web/src/layout/logo/index.vue +++ b/web/src/layout/logo/index.vue @@ -14,7 +14,7 @@ import { storeToRefs } from 'pinia'; import { useThemeConfig } from '/@/stores/themeConfig'; import logoMini from '/@/assets/logo-mini.svg'; import { SystemConfigStore } from "/@/stores/systemConfig"; -import _ from "lodash"; +import _ from "lodash-es"; // 定义变量内容 const storesThemeConfig = useThemeConfig(); const { themeConfig } = storeToRefs(storesThemeConfig); diff --git a/web/src/views/system/login/index.vue b/web/src/views/system/login/index.vue index 7915b64..bb442bf 100644 --- a/web/src/views/system/login/index.vue +++ b/web/src/views/system/login/index.vue @@ -79,7 +79,7 @@ import { getBaseURL } from "/@/utils/baseUrl"; const Account = defineAsyncComponent(() => import('/@/views/system/login/component/account.vue')); const Mobile = defineAsyncComponent(() => import('/@/views/system/login/component/mobile.vue')); const Scan = defineAsyncComponent(() => import('/@/views/system/login/component/scan.vue')); -import _ from "lodash"; +import _ from "lodash-es"; // 定义变量内容 const storesThemeConfig = useThemeConfig();