docker部署sqler

 

---------------------------------
#(x.1)配置文件
  (x.1)把本文件所在目录中的Data拷贝到宿主机
  (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 端口映射）

cd /root/docker

cd 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
cd .. 


#精简
docker run --name=sqler --restart=always -d -p 4570:4570 serset/sqler



#(x.3)应用已经运行 
 http://ip:4570 

#---------------------------------------
#常用命令

#查看容器logs
docker logs sqler

#在容器内执行命令行
docker  exec -it sqler /bin/sh

#停止容器
docker stop sqler

#打开容器
docker start sqler

#重启容器
docker restart sqler


#删除容器
docker rm sqler -f




#----------------------------------------------------------
#命令行运行

cd /root/docker

cd sqler
docker run --rm -it  -p 4570:4570  \
-v /etc/localtime:/etc/localtime \
-v $PWD/appsettings.json:/root/app/sqler/appsettings.json \
-v $PWD/Logs:/root/app/sqler/Logs  \
-v $PWD/SqlerData:/root/app/SqlerData  \
serset/sqler  \
dotnet Sqler.dll --DataPath "../SqlerData/Local_Basis"
cd .. 



#查看帮助
docker run --rm -it serset/sqler dotnet Sqler.dll help



# 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_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';




#备份数据库
docker run --rm -it \
--link wordpress-mysql:mysql \
-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;"
 






#强制还原数据库
docker run --rm -it \
--link wordpress-mysql:mysql \
-v /root/data:/root/data  \
serset/sqler  \
dotnet Sqler.dll MySql.Restore \
-f --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;"

 



#运行容器，在断开后自动关闭并清理
docker run --rm -it -p 4570:4570 serset/sqler dotnet Sqler.dll help

docker run --rm -it -p 4570:4570 serset/sqler bash
dotnet Sqler.dll help

 
 

---------------------------------------
#文件复制

#1、从容器拷贝文件到宿主机
docker cp sqler:/root/app/SqlerData/ SqlerData

#2、从宿主机拷贝文件到容器
docker cp SqlerData sqler:/root/app/SqlerData/ 




