From 988daf03dd31dbe85d57299442ceb9c80d2a6290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Mon, 18 Mar 2024 14:28:25 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=A1=A8=E7=9A=84key=E5=80=BC=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/system/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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="启用状态") From edf45c08d1cc4c54695e858ebfe9cac22527d323 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Mon, 18 Mar 2024 18:18:44 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20fast-crud=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/package.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/web/package.json b/web/package.json index 956d682..f6528f4 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.1.0", "echarts": "^5.4.1", "echarts-gl": "^2.0.9", "echarts-wordcloud": "^2.1.0", From 2cfd8f07988835177892d8ea73ee0cc264402d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Mon, 18 Mar 2024 21:21:19 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=E5=89=8D=E7=AB=AFlodash=E5=8C=85?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=88=90lodash-es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/package.json | 3 ++- web/src/layout/logo/index.vue | 2 +- web/src/views/system/login/index.vue | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/web/package.json b/web/package.json index f6528f4..ac89be4 100644 --- a/web/package.json +++ b/web/package.json @@ -23,7 +23,7 @@ "axios": "^1.2.1", "countup.js": "^2.3.2", "cropperjs": "^1.5.13", - "e-icon-picker": "^2.1.0", + "e-icon-picker": "^2.2.0", "echarts": "^5.4.1", "echarts-gl": "^2.0.9", "echarts-wordcloud": "^2.1.0", @@ -33,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(); From 5bd57232d8cc584dd96bbdad54f31c8839f08d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Mon, 18 Mar 2024 21:22:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96docker=E9=83=A8?= =?UTF-8?q?=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/conf/env.example.py | 4 +++- docker-compose.yml | 4 ++-- docker_env/django/Dockerfile | 2 +- docker_env/mysql/conf.d/my.cnf | 6 +++--- init.sh | 31 +++++++++++++++++++++++++++++++ 5 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 init.sh 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/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 "如访问不到,请检查防火墙配置"