Lith 7 months ago
parent
commit
0e613b632a

+ 315 - 321
Publish/ReleaseFile/docker-deploy/sqler/docker部署sqler.md → Publish/ReleaseFile/docker-deploy/sqler/docker-sqler.md

@@ -1,321 +1,315 @@
-# sqler说明书-docker
-
-
----------------------------------
-# 查看帮助
-
-``` bash
-#查看全部帮助信息
-docker run --rm -it serset/sqler dotnet Sqler.dll help
-
-#查看命令MySql.BackupSqler的帮助信息
-docker run --rm -it serset/sqler dotnet Sqler.dll help -c MySql.BackupSqler
-
-```
-
-``` txt
-
-开始执行命令 help ...
----------------
-命令说明:
----------------
-help
-命令说明:
--c[--command] 要查询的命令。若不指定则返回所有命令的说明。如 help 
-示例: help -c help
----------------
-
-
-```
-
-
----------------------------------
-# mysql
-Sqler可以对MySql数据库进行 备份、还原、创建、删除。
-
-
-## 一.连接字符串说明
-
-### (x.1)避免问题Unable to convert MySQL date/time value to System.DateTime
-读取MySql时,如果存在字段类型为date/datetime时可能会出现以下问题,“Unable to convert MySQL date/time value to System.DateTime”  
-解决方法为 在链接MySQL的字符串中添加:Convert Zero Datetime=True;Allow Zero Datetime=True;  
-如: "Data Source=mysql;Port=3306;Database=wordpress;User Id=root;Password=123456;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
-
-
-### (x.2)避免datetime类型默认值出现“Invalid default value for..."错误
-执行如下sql语句:
-
-``` sql
--- 查看sql_mode
-show variables like '%sql_mode%';
-
--- 修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE:
-set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-
-```
-
-
-## 二.备份数据库
-备份mysql数据库到指定文件,使用sqler备份方式
-> sqler备份步骤为:    
-> 1.构建建库脚本保存到文件(CreateDataBase.sql)    
-> 2.备份所有表数据到sqlite文件(Data.sqlite3)    
-> 3.压缩为zip文件    
-
-demo:
-``` bash
-docker run --rm -it \
--v /root/data:/root/data  \
-serset/sqler  \
-dotnet Sqler.dll MySql.BackupSqler \
---filePath "/root/data/wordpress.sqler.zip" \
---ConnectionString "Data Source=mysql;Port=3306;Database=wordpress;User Id=root;Password=123456;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
-```
-
-参数说明:
-``` txt
-MySql.BackupSqler
-远程备份数据库。参数说明:备份文件名称和路径指定其一即可,若均不指定则自动生成
--fn[--fileName] (可选)备份文件名称,备份文件在当前管理的备份文件夹中。例如 "DbDev_2020-06-08_135203.zip"
--fp[--filePath] (可选)备份文件路径,例如 "/root/docker/DbDev_2020-06-08_135203.zip"
--c[--useMemoryCache] 若为false则不使用内存进行全量缓存,默认:true。缓存到内存可以加快备份速度。在数据源特别庞大时请禁用此功能(指定false)。
--ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
---DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
-示例: MySql.BackupSqler --useMemoryCache false -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" --filePath "/root/docker/DbDev_2020-06-08_135203.zip"
-```
-
-
-## 三.还原数据库
-还原mysql备份文件到数据库
-
-demo:
-``` bash
-#强制还原数据库
-docker run --rm -it \
--v /root/data:/root/data  \
-serset/sqler  \
-dotnet Sqler.dll MySql.Restore \
---filePath "/root/data/wordpress.sqler.zip" \
---ConnectionString "Data Source=mysql;Port=3306;Database=wordpress;User Id=root;Password=123456;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
-```
-
-参数说明:
-``` txt
-MySql.Restore
-通过备份文件远程还原数据库。参数说明:备份文件名称和路径指定其一即可
--f[--force] 强制还原数据库。若指定此参数,则在数据库已经存在时仍然还原数据库;否则仅在数据库尚未存在时还原数据库。
--fn[--fileName] (可选)备份文件名称,备份文件在当前管理的备份文件夹中。例如 "DbDev_2020-06-08_135203.bak"
--fp[--filePath] (可选)备份文件路径,例如 "/root/docker/DbDev_2020-06-08_135203.bak"
--ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
---DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
-示例: MySql.Restore -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" --filePath "/root/docker/DbDev_2020-06-08_135203.bak"
-
-```
-
-
-
-# 四.创建数据库
-
-demo:
-``` bash
-docker run --rm -it \
-serset/sqler \
-dotnet Sqler.dll MySql.CreateDataBase \
--ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
-```
-
-参数说明:
-``` txt
-MySql.CreateDataBase
-若数据库不存在,则创建数据库。参数说明:
--ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
---DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
-示例: MySql.CreateDataBase -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
-```
-
-
-
-
-
-# 六.删除数据库
-demo:
-``` bash
-docker run --rm -it \
-serset/sqler \
-dotnet Sqler.dll MySql.DropDataBase \
--ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
-```
-
-参数说明:
-``` txt
-MySql.DropDataBase
-若数据库存在,则删除数据库。参数说明:
--ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
---DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
-示例: MySql.DropDataBase -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" 
-
-```
-
-
-
----------------------------------
-# mssql
-Sqler可以对msql(Sql Server)数据库进行 备份、还原、创建、删除。
-
-
- 
-
-## 二.备份数据库
-备份mysql数据库到指定文件,使用sqler备份方式
-> sqler备份步骤为:    
-> 1.构建建库脚本保存到文件(CreateDataBase.sql)    
-> 2.备份所有表数据到sqlite文件(Data.sqlite3)    
-> 3.压缩为zip文件    
-
-demo:
-``` bash
-docker run --rm -it \
--v /root/data:/root/data  \
-serset/sqler  \
-dotnet Sqler.dll SqlServer.BackupLocalBak \
---filePath "/root/data/wordpress.sqler.zip" \
---ConnectionString "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
-```
-
-参数说明:
-``` txt
-SqlServer.BackupLocalBak
-本地bak备份数据库。参数说明:备份文件名称和路径指定其一即可,若均不指定则自动生成
--fn[--fileName] (可选)备份文件名称,备份文件在当前管理的备份文件夹中。例如 "DbDev_2020-06-08_135203.bak"
--fp[--filePath] (可选)备份文件路径,例如 "/root/docker/DbDev_2020-06-08_135203.bak"
--ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
---DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
-示例: SqlServer.BackupLocalBak -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" --filePath "/root/docker/DbDev_2020-06-08_135203.bak"
-```
-
-
-## 三.还原数据库
-还原mysql备份文件到数据库
-
-demo:
-``` bash
-#强制还原数据库
-docker run --rm -it \
--v /root/data:/root/data  \
-serset/sqler  \
-dotnet Sqler.dll MySql.Restore \
---filePath "/root/data/wordpress.sqler.zip" \
---ConnectionString "Data Source=mysql;Port=3306;Database=wordpress;User Id=root;Password=123456;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
-```
-
-参数说明:
-``` txt
-MySql.Restore
-通过备份文件远程还原数据库。参数说明:备份文件名称和路径指定其一即可
--f[--force] 强制还原数据库。若指定此参数,则在数据库已经存在时仍然还原数据库;否则仅在数据库尚未存在时还原数据库。
--fn[--fileName] (可选)备份文件名称,备份文件在当前管理的备份文件夹中。例如 "DbDev_2020-06-08_135203.bak"
--fp[--filePath] (可选)备份文件路径,例如 "/root/docker/DbDev_2020-06-08_135203.bak"
--ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
---DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
-示例: MySql.Restore -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" --filePath "/root/docker/DbDev_2020-06-08_135203.bak"
-
-```
-
-
-
-# 四.创建数据库
-
-demo:
-``` bash
-docker run --rm -it \
-serset/sqler \
-dotnet Sqler.dll MySql.CreateDataBase \
--ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
-```
-
-参数说明:
-``` txt
-MySql.CreateDataBase
-若数据库不存在,则创建数据库。参数说明:
--ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
---DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
-示例: MySql.CreateDataBase -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
-```
-
-
-
-
----------------------------------
-# 六.常驻后台服务
-
-## (x.1)配置文件
-	  (x.x.1)把本文件所在目录中的Data拷贝到宿主机
-	  (x.x.2)修改配置文件 appsettings.json
- 
-
-## (x.2)创建容器并运行
-(--name 容器名称,可自定义)
-(--restart=always 自动重启)
-(-v /etc/localtime:/etc/localtime)挂载宿主机localtime文件解决容器时间与主机时区不一致的问题
-(-v $PWD/data:/data 将主机中当前目录下的data挂载到容器的/data)
-(--net=host 网络直接使用宿主机网络)(-p 6022:6022 端口映射)
-
-``` bash
-cd /root/docker/sqler
-docker run --name=sqler --restart=always -d \
--p 4570:4570 \
--v /etc/localtime:/etc/localtime \
--v $PWD/appsettings.json:/root/app/sqler/appsettings.json \
--v $PWD/Data:/root/app/sqler/Data  \
--v $PWD/Logs:/root/app/sqler/Logs  \
-serset/sqler
-
-
-#精简
-docker run --name=sqler --restart=always -d -p 4570:4570 serset/sqler
-
-
-#应用已经运行
-#访问地址为 http://ip:4570 
-
-
-
-#---------------------------------------
-#常用命令
-
-#查看容器logs
-docker logs sqler
-
-#在容器内执行命令行
-docker  exec -it sqler bash
-
-#停止容器
-docker stop sqler
-
-#打开容器
-docker start sqler
-
-#重启容器
-docker restart sqler
-
-#删除容器
-docker rm sqler -f
-
-
-#--------------------------------------
-#文件复制
-
-#1、从容器拷贝文件到宿主机
-docker cp sqler:/root/app/SqlerData/ SqlerData
-
-#2、从宿主机拷贝文件到容器
-docker cp SqlerData sqler:/root/app/SqlerData/
-
-```
-
-
-
-
-
-
+# sqler
+
+
+---------------------------------
+# 查看帮助
+
+``` bash
+#查看全部帮助信息
+docker run --rm -it serset/sqler dotnet Sqler.dll help
+
+#查看命令MySql.BackupSqler的帮助信息
+docker run --rm -it serset/sqler dotnet Sqler.dll help -c MySql.BackupSqler
+
+```
+
+``` txt
+
+开始执行命令 help ...
+---------------
+命令说明:
+---------------
+help
+命令说明:
+-c[--command] 要查询的命令。若不指定则返回所有命令的说明。如 help 
+示例: help -c help
+---------------
+
+
+```
+
+
+---------------------------------
+# mysql
+Sqler可以对MySql数据库进行 备份、还原、创建、删除。
+
+
+## 一.连接字符串说明
+
+### (x.1)避免问题Unable to convert MySQL date/time value to System.DateTime
+读取MySql时,如果存在字段类型为date/datetime时可能会出现以下问题,“Unable to convert MySQL date/time value to System.DateTime”  
+解决方法为 在链接MySQL的字符串中添加:Convert Zero Datetime=True;Allow Zero Datetime=True;  
+如: "Data Source=mysql;Port=3306;Database=wordpress;User Id=root;Password=123456;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
+
+
+### (x.2)避免datetime类型默认值出现“Invalid default value for..."错误
+执行如下sql语句:
+
+``` sql
+-- 查看sql_mode
+show variables like '%sql_mode%';
+
+-- 修改sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE:
+set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
+set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
+
+```
+
+
+## 二.备份数据库
+备份mysql数据库到指定文件,使用sqler备份方式
+> sqler备份步骤为:    
+> 1.构建建库脚本保存到文件(CreateDataBase.sql)    
+> 2.备份所有表数据到sqlite文件(Data.sqlite3)    
+> 3.压缩为zip文件    
+
+demo:
+``` bash
+docker run --rm -it \
+-v /root/data:/root/data  \
+serset/sqler  \
+dotnet Sqler.dll MySql.BackupSqler \
+--filePath "/root/data/wordpress.sqler.zip" \
+--ConnectionString "Data Source=mysql;Port=3306;Database=wordpress;User Id=root;Password=123456;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
+```
+
+参数说明:
+``` txt
+MySql.BackupSqler
+远程备份数据库。参数说明:备份文件名称和路径指定其一即可,若均不指定则自动生成
+-fn[--fileName] (可选)备份文件名称,备份文件在当前管理的备份文件夹中。例如 "DbDev_2020-06-08_135203.zip"
+-fp[--filePath] (可选)备份文件路径,例如 "/root/docker/DbDev_2020-06-08_135203.zip"
+-c[--useMemoryCache] 若为false则不使用内存进行全量缓存,默认:true。缓存到内存可以加快备份速度。在数据源特别庞大时请禁用此功能(指定false)。
+-ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
+示例: MySql.BackupSqler --useMemoryCache false -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" --filePath "/root/docker/DbDev_2020-06-08_135203.zip"
+```
+
+
+## 三.还原数据库
+还原mysql备份文件到数据库
+
+demo:
+``` bash
+#强制还原数据库
+docker run --rm -it \
+-v /root/data:/root/data  \
+serset/sqler  \
+dotnet Sqler.dll MySql.Restore \
+--filePath "/root/data/wordpress.sqler.zip" \
+--ConnectionString "Data Source=mysql;Port=3306;Database=wordpress;User Id=root;Password=123456;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
+```
+
+参数说明:
+``` txt
+MySql.Restore
+通过备份文件远程还原数据库。参数说明:备份文件名称和路径指定其一即可
+-f[--force] 强制还原数据库。若指定此参数,则在数据库已经存在时仍然还原数据库;否则仅在数据库尚未存在时还原数据库。
+-fn[--fileName] (可选)备份文件名称,备份文件在当前管理的备份文件夹中。例如 "DbDev_2020-06-08_135203.bak"
+-fp[--filePath] (可选)备份文件路径,例如 "/root/docker/DbDev_2020-06-08_135203.bak"
+-ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
+示例: MySql.Restore -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" --filePath "/root/docker/DbDev_2020-06-08_135203.bak"
+
+```
+
+
+
+# 四.创建数据库
+
+demo:
+``` bash
+docker run --rm -it \
+serset/sqler \
+dotnet Sqler.dll MySql.CreateDataBase \
+-ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+```
+
+参数说明:
+``` txt
+MySql.CreateDataBase
+若数据库不存在,则创建数据库。参数说明:
+-ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
+示例: MySql.CreateDataBase -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+```
+
+
+
+
+
+# 六.删除数据库
+demo:
+``` bash
+docker run --rm -it \
+serset/sqler \
+dotnet Sqler.dll MySql.DropDataBase \
+-ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+```
+
+参数说明:
+``` txt
+MySql.DropDataBase
+若数据库存在,则删除数据库。参数说明:
+-ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
+示例: MySql.DropDataBase -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" 
+
+```
+
+
+
+---------------------------------
+# mssql
+Sqler可以对msql(Sql Server)数据库进行 备份、还原、创建、删除。
+
+
+ 
+
+## 二.备份数据库
+备份mysql数据库到指定文件,使用sqler备份方式
+> sqler备份步骤为:    
+> 1.构建建库脚本保存到文件(CreateDataBase.sql)    
+> 2.备份所有表数据到sqlite文件(Data.sqlite3)    
+> 3.压缩为zip文件    
+
+demo:
+``` bash
+docker run --rm -it \
+-v /root/data:/root/data  \
+serset/sqler  \
+dotnet Sqler.dll SqlServer.BackupLocalBak \
+--filePath "/root/data/wordpress.sqler.zip" \
+--ConnectionString "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+```
+
+参数说明:
+``` txt
+SqlServer.BackupLocalBak
+本地bak备份数据库。参数说明:备份文件名称和路径指定其一即可,若均不指定则自动生成
+-fn[--fileName] (可选)备份文件名称,备份文件在当前管理的备份文件夹中。例如 "DbDev_2020-06-08_135203.bak"
+-fp[--filePath] (可选)备份文件路径,例如 "/root/docker/DbDev_2020-06-08_135203.bak"
+-ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
+示例: SqlServer.BackupLocalBak -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" --filePath "/root/docker/DbDev_2020-06-08_135203.bak"
+```
+
+
+## 三.还原数据库
+还原mysql备份文件到数据库
+
+demo:
+``` bash
+#强制还原数据库
+docker run --rm -it \
+-v /root/data:/root/data  \
+serset/sqler  \
+dotnet Sqler.dll MySql.Restore \
+--filePath "/root/data/wordpress.sqler.zip" \
+--ConnectionString "Data Source=mysql;Port=3306;Database=wordpress;User Id=root;Password=123456;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
+```
+
+参数说明:
+``` txt
+MySql.Restore
+通过备份文件远程还原数据库。参数说明:备份文件名称和路径指定其一即可
+-f[--force] 强制还原数据库。若指定此参数,则在数据库已经存在时仍然还原数据库;否则仅在数据库尚未存在时还原数据库。
+-fn[--fileName] (可选)备份文件名称,备份文件在当前管理的备份文件夹中。例如 "DbDev_2020-06-08_135203.bak"
+-fp[--filePath] (可选)备份文件路径,例如 "/root/docker/DbDev_2020-06-08_135203.bak"
+-ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
+示例: MySql.Restore -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;" --filePath "/root/docker/DbDev_2020-06-08_135203.bak"
+
+```
+
+
+
+# 四.创建数据库
+
+demo:
+``` bash
+docker run --rm -it \
+serset/sqler \
+dotnet Sqler.dll MySql.CreateDataBase \
+-ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+```
+
+参数说明:
+``` txt
+MySql.CreateDataBase
+若数据库不存在,则创建数据库。参数说明:
+-ConnStr[--ConnectionString] (可选)数据库连接字符串 例如 "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:"Data"
+示例: MySql.CreateDataBase -ConnStr "Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
+```
+
+
+
+
+---------------------------------
+# 六.常驻后台服务
+
+## (x.1)配置文件
+	  (x.x.1)把本文件所在目录中的Data拷贝到宿主机
+	  (x.x.2)修改配置文件 appsettings.json
+ 
+
+## (x.2)创建容器并运行
+(--name 容器名称,可自定义)
+(--restart=always 自动重启)
+(-v /etc/localtime:/etc/localtime)挂载宿主机localtime文件解决容器时间与主机时区不一致的问题
+(-v $PWD/data:/data 将主机中当前目录下的data挂载到容器的/data)
+(--net=host 网络直接使用宿主机网络)(-p 6022:6022 端口映射)
+
+``` bash
+
+
+
+cd /root/docker/sqler
+
+
+docker run --name=sqler --restart=always -d \
+-p 4570:4570 \
+-v /etc/localtime:/etc/localtime \
+-v $PWD/Data:/root/app/Data  \
+-v $PWD/Logs:/root/app/Logs  \
+serset/sqler
+
+
+docker logs sqler
+
+
+
+docker run --name=sqler --restart=always -d -p 4570:4570 serset/sqler
+
+
+http://ip:4570 
+
+
+
+#---------------------------------------
+# 常用命令
+
+
+docker exec -it sqler bash
+
+docker logs sqler
+
+
+docker stop sqler
+
+docker start sqler
+
+docker restart sqler
+
+docker rm sqler -f
+
+
+
+```
+
+
+
+
+
+

+ 2 - 1
doc/controllerConfig.js

@@ -20,6 +20,7 @@ var controllerConfig = {
 
     "listConfig": {
         "title": "autoTemp-demo",
+        "defaultSort": [{ "field": "id", "asc": false }],
         "listButtons": [
             {
                 "title": "执行js",
@@ -64,7 +65,7 @@ var controllerConfig = {
             },
 
             "ig_attr": {
-                "ig_class": "Text",  // Text TextArea
+                "ig_class": "TextArea",  // Text TextArea
                 "ig_param": { "width": 300 }
             },
 

+ 1 - 1
src/Sqler/Module/Sqler/Logical/DataEditor/GridManage/AutoTempModel_Grid.cs

@@ -16,7 +16,7 @@
         /// table name or column name
         /// </summary>
         public string name { get; set; }
-        public int sortIndex { get; set; }
+        public int? sortIndex { get; set; }
         /// <summary>
         /// 是否为主键(1:是,   其他:不是)
         /// </summary>

+ 1 - 1
src/Sqler/Module/Sqler/Logical/DataEditor/GridManage/GridManageDataProvider.cs

@@ -20,7 +20,7 @@ namespace App.Module.Sqler.Logical.DataEditor.GridManage
     {
         public RespositoryDataProvider<Model> ToDataProvider()
         {
-            var str = File.ReadAllText(CommonHelp.GetAbsPath("Data", "Sqler_DataEditor_schema.ControllerConfig.json"));
+            var str = File.ReadAllText(CommonHelp.GetAbsPath("Sqler_DataEditor_schema.ControllerConfig.json"));
             var controllerConfig = Json.Deserialize<AutoTempControllerConfig>(str);
             return new RespositoryDataProvider<Model>(this, templateName, controllerConfig);
         }

+ 3 - 1
src/Sqler/Module/Sqler/Logical/DataEditor/GridManage/GridService.cs

@@ -62,6 +62,7 @@ namespace Sqler.Module.Sqler.Logical.DataEditor.GridManage
             modelTable.pid = "0";
             modelTable.id = entity.templateName;
             modelTable.autoTemp_Config = entity.autoTemp_Config;
+            modelTable.sortIndex = entity.sortIndex;
             yield return modelTable;
 
             // columns
@@ -85,7 +86,7 @@ namespace Sqler.Module.Sqler.Logical.DataEditor.GridManage
                 // table
                 if (entity == null)
                 {
-                    entity = new() { templateName = model.templateName, tableName = model.name };
+                    entity = new() { templateName = model.templateName, tableName = model.name, sortIndex = model.sortIndex };
                     Data.Add(entity);
 
                     return model;
@@ -97,6 +98,7 @@ namespace Sqler.Module.Sqler.Logical.DataEditor.GridManage
                     entity.tableName = model.name;
                     entity.templateName = model.templateName;
                     entity.autoTemp_Config = model.autoTemp_Config;
+                    entity.sortIndex = model.sortIndex;
 
                     Data.Add(entity);
 

+ 1 - 0
src/Sqler/Module/Sqler/Logical/DataEditor/GridManage/TableSchemaEntity.cs

@@ -36,6 +36,7 @@ namespace Sqler.DataEditor.Config
         [Column(TypeName = "text")]
         public string autoTemp_Config { get; set; }
 
+        public int? sortIndex { get; set; }
 
 
 

+ 6 - 13
src/Sqler/Module/Sqler/Logical/Menu/MenuEntity.cs

@@ -13,16 +13,13 @@ namespace Sqler.Menu
         /// 
         ///  "idField": "id",
         ///  "pidField": "pid",
-        ///  "treeField": 'title',
-        ///  "rootPidValue": 0
+        ///  "treeField": "title",
+        ///  "rootPidValue": 0,
+        ///  "listConfig": {"defaultSort":[{"field":"sortIndex","asc":true}]}
         ///  
         /// } ]]
         /// 
-        /// [[AutoTemp_Field: {
-        ///
-        ///  "list_config": {"width":250}
-        ///
-        /// } ]]
+        /// [[AutoTemp_Field: {  "list_config": {"width":250} } ]]
         /// </summary>
         public string title { get; set; }
 
@@ -47,16 +44,12 @@ namespace Sqler.Menu
         public bool? enabled { get; set; }
 
         /// <summary>
-        /// [[AutoTemp_Field: {
-        ///  "list_config": {"width":80}
-        /// } ]]
+        /// [[AutoTemp_Field: { "list_config": {"width":80}  } ]]
         /// </summary>
         public int? sortIndex { get; set; }
 
         /// <summary>
-        /// [[AutoTemp_Field: {
-        ///  "list_config": {"width":300}
-        /// } ]]
+        /// [[AutoTemp_Field: { "list_config": {"width":300} } ]]
         /// </summary>
         public string url { get; set; }
 

+ 2 - 2
src/Sqler/Module/Sqler/Logical/SqlVersion/SqlVersionService.cs

@@ -6,6 +6,7 @@ using Sqler.SqlVersion.DataSource;
 using Sqler.SqlVersion.Entity;
 
 using Vit.Core.Module.Log;
+using Vit.Core.Util.Common;
 using Vit.Core.Util.ComponentModel.Data;
 using Vit.Core.Util.ConfigurationManager;
 using Vit.Extensions;
@@ -22,8 +23,7 @@ namespace App.Module.Sqler.Logical.SqlVersion
             using (var conn = SqlVersionHelp.CreateOpenedDbConnection())
             {
                 var dbType = conn.GetDbType()?.ToString()?.ToLower();
-
-                var sql = new JsonFile(SqlerHelp.GetDataFilePath("sqler.SqlVersion.table.json")).GetStringByPath("initDb." + dbType);
+                var sql = new JsonFile(CommonHelp.GetAbsPath("sqler.SqlVersion.table.json")).GetStringByPath("initDb." + dbType);
 
                 if (!string.IsNullOrWhiteSpace(sql))
                 {

+ 1 - 1
src/Sqler/Module/Sqler/SqlerHelp.cs

@@ -282,7 +282,7 @@ namespace App.Module.Sqler.Logical
                 
                 if (Data.Query<MenuEntity>().Count() == 0) 
                 {
-                    var str = File.ReadAllText(CommonHelp.GetAbsPath("Data", "Sqler_DefaultMenu.json"));
+                    var str = File.ReadAllText(CommonHelp.GetAbsPath("Sqler_DefaultMenu.json"));
                     if (!string.IsNullOrWhiteSpace(str))
                     {
                         var menuItems = Json.Deserialize<List<MenuEntity>>(str);

+ 19 - 23
src/Sqler/Sqler.csproj

@@ -14,15 +14,15 @@
     <ItemGroup>
         <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
         <PackageReference Include="System.Reflection.Emit" Version="4.7.0" />
-        <PackageReference Include="Vit.Excel" Version="2.2.18" />
-        <PackageReference Include="Vit.WebHost" Version="6.1.1" />
-        <PackageReference Include="Vit.Db.DbMng" Version="3.0.2-preview-ki1" />
-        <PackageReference Include="Sers.Core" Version="2.1.28" />
-        <PackageReference Include="Vitorm.File" Version="2.2.0-preview2-ki9" />
-        <PackageReference Include="Vitorm.MySql" Version="2.2.0-preview4-ki23" />
-        <PackageReference Include="Vitorm.Sqlite" Version="2.2.0-preview4-ki23" />
-        <PackageReference Include="Vitorm.SqlServer" Version="2.2.0-preview4-ki23" />
-        <PackageReference Include="Vitorm.EntityGenerate" Version="2.2.0-preview4-ki23" />
+        <PackageReference Include="Vit.Excel" Version="2.2.19" />
+        <PackageReference Include="Vit.WebHost" Version="6.3.0" />
+        <PackageReference Include="Vit.Db.DbMng" Version="3.0.2" />
+        <PackageReference Include="Sers.Core" Version="2.2.0" />
+        <PackageReference Include="Vitorm.File" Version="2.2.0" />
+        <PackageReference Include="Vitorm.MySql" Version="2.2.0" />
+        <PackageReference Include="Vitorm.Sqlite" Version="2.2.0" />
+        <PackageReference Include="Vitorm.SqlServer" Version="2.2.0" />
+        <PackageReference Include="Vitorm.EntityGenerate" Version="2.2.0" />
     </ItemGroup>
 
 
@@ -39,31 +39,27 @@
             <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </Content>
 
-        <Content Update="Data\Sqler_DataEditor_schema.ControllerConfig.json">
-            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-            <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
-            <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
-        </Content>
-
-        <Content Update="Data\sqler.SqlVersion.table.json">
-            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+        <Content Update="Sqler_DataEditor_schema.ControllerConfig.json">
+            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </Content>
 
-        <Content Update="Data\sqler.json">
-            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+        <Content Update="sqler.SqlVersion.table.json">
+            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </Content>
 
-        <Content Update="Data\SqlVersion\Demo.json">
-            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+        <Content Update="Sqler_DefaultMenu.json">
+            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
         </Content>
 
     </ItemGroup>
 
 
     <ItemGroup>
-        <None Update="Data\db.sqlite">
+
+        <Content Update="Data\sqler.json">
             <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-        </None>
+        </Content>
+
         <None Update="Data\MySqlBackup\readme.txt">
             <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
         </None>

+ 12 - 1
src/Sqler/Data/Sqler_DataEditor_schema.ControllerConfig.json → src/Sqler/Sqler_DataEditor_schema.ControllerConfig.json

@@ -2,7 +2,18 @@
   "idField": "id",
   "pidField": "pid",
   "treeField": "name",
-
+  "listConfig": {
+    "defaultSort": [
+      {
+        "field": "sortIndex",
+        "asc": true
+      },
+      {
+        "field": "templateName",
+        "asc": true
+      }
+    ]
+  },
   "fields": [
     {
       "field": "name",

+ 0 - 0
src/Sqler/Data/Sqler_DefaultMenu.json → src/Sqler/Sqler_DefaultMenu.json


+ 0 - 0
src/Sqler/Data/sqler.SqlVersion.table.json → src/Sqler/sqler.SqlVersion.table.json


+ 9 - 5
src/Sqler/wwwroot/Scripts/autoTemp/autoTemp.Field.js

@@ -46,8 +46,9 @@
 
 
 
-        self.getVisiable = function () {
-            return self.config.visible != false && self.config.visible != 'false';
+        self.getVisible = function () {
+            let visible = self.config?.visible;
+            return visible !== false && visible !== 'false';
         }
 
 
@@ -77,7 +78,10 @@
 
         self.list_init = function () {
 
-            if (!self.getVisiable()) {
+            let visible = self.config?.list_config?.visible;
+            if (visible === false || visible === 'false') return null;
+
+            if (!self.getVisible()) {
                 return null;
             }
             //align: "center",
@@ -100,7 +104,7 @@
         }
 
         self.build_infoGet_Html = function () {
-            if (!self.getVisiable()) {
+            if (!self.getVisible()) {
                 return '';
             }
             let igAttr = self.config.ig_attr;
@@ -142,7 +146,7 @@
         for (var t in atFields) {
             var self = atFields[t];
 
-            if (!self.getVisiable() || !self.getEditable()) {
+            if (!self.getVisible() || !self.getEditable()) {
                 delete model[self.config.field];
                 continue;
             }

+ 8 - 0
src/Sqler/wwwroot/Scripts/autoTemp/list.js

@@ -139,6 +139,10 @@ function TemplateData() {
                     for (var t in sort) {
                         queryParam.sort.push({ "field": sort[t], "asc": order[t] == 'asc' });
                     }
+                } else {
+                    if (controllerConfig?.listConfig?.defaultSort) {
+                        queryParam.sort = controllerConfig.listConfig.defaultSort;
+                    }
                 }
 
                 function onSuccess(apiRet) {
@@ -363,6 +367,10 @@ function TemplateTree() {
                     for (var t in sort) {
                         queryParam.sort.push({ "field": sort[t], "asc": order[t] == 'asc' });
                     }
+                } else {
+                    if (controllerConfig?.listConfig?.defaultSort) {
+                        queryParam.sort = controllerConfig.listConfig.defaultSort;
+                    }
                 }
 
                 function onSuccess(apiRet) {

+ 1 - 1
src/Sqler/wwwroot/sqler/index.js

@@ -72,7 +72,7 @@ function getMenu(menuEntity) {
 // get menu items
 $.ajax({
     type: 'GET',
-    url: '/autoTemp/data/Sqler_Menu_Mng/getList',
+    url: '/autoTemp/data/Sqler_Menu_Mng/getList?sort=[{"field":"sortIndex","asc":true}]',
     dataType: "json",
     success: function (apiReturn) {
 

+ 3 - 0
src/Vit.AutoTemp/AutoTempControllerConfig.ListConfig.cs

@@ -2,6 +2,8 @@
 using System.Collections.Generic;
 using System.Text;
 
+using Vit.Linq.ComponentModel;
+
 namespace Vit.AutoTemp
 {
     public partial class AutoTempControllerConfig
@@ -10,6 +12,7 @@ namespace Vit.AutoTemp
         {
             public string title;
 
+            public List<OrderField> defaultSort;
             public List<Button> listButtons;
             public List<Button> rowButtons;
 

+ 3 - 3
src/Vit.AutoTemp/Vit.AutoTemp.csproj

@@ -7,9 +7,9 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Vit.Db" Version="3.0.2-preview-ki1" />
-        <PackageReference Include="Vitorm" Version="2.2.0-preview4-ki23" />
-        <PackageReference Include="Vitorm.Data" Version="2.2.0-preview4-ki23" />
+        <PackageReference Include="Vit.Db" Version="3.0.2" />
+        <PackageReference Include="Vitorm" Version="2.2.0" />
+        <PackageReference Include="Vitorm.Data" Version="2.2.0" />
     </ItemGroup>
 
 </Project>