通过Docker部署Linux版SqlServer 2022-12-30 03:55 201阅读 0赞 很多人不知道SqlServer还有Linux版的,微软官方于2016年就发布了SqlServer 2017 for Linux,使得SqlServer数据库可以运行在Linux内核的服务器上。按照微软官方的解释,SQL Server 2017 在所有支持的平台(包括 Linux)上具有相同的基础数据库引擎。 因此,在 Linux 上,许多现有功能运行方式相同。既然有了Linux版,那么就应该在Docker Hub上能找到对应的Docker镜像:[https://hub.docker.com/r/microsoft/mssql-server-linux/][https_hub.docker.com_r_microsoft_mssql-server-linux] 要使用容器,我们先需要安装一下基础环境: 1. 安装docker要使用**centos 7以上版本**,使用centos 6及以下版本会出现各种问题 2. docker CE安装过程 $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #建立仓库 $ sudo yum install docker-ce #安装docker $ sudo systemctl start docker #开启docker 3. dockerfile准备 开始构建一个基于项目应用的SqlServer容器,首先我们选定基础镜像:microsoft/mssql-server-linux:2017-latest,然后我们需要有个初始化数据脚本(开发人员会提供),往生成的容器中导入我们的项目数据。这个脚本的开头部分大概是这样: 1. `USE [master]` 2. `GO` 3. `/****** Object: Database [LayIM] Script Date: 2017/2/24 9:39:19 ******/` 4. `CREATE DATABASE [LayIM]` 5. `CONTAINMENT = NONE` 6. `ON PRIMARY` 7. `( NAME = N'LayIM', FILENAME = N'/var/opt/mssql/data/LayIM.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )` 8. `LOG ON` 9. `( NAME = N'LayIM_log', FILENAME = N'/var/opt/mssql/data/LayIM_log.ldf' , SIZE = 1280KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)` 10. `GO` 11. `ALTER DATABASE [LayIM] SET COMPATIBILITY_LEVEL = 100` 12. `GO` 13. `IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))` 14. `begin` 15. `EXEC [LayIM].[dbo].[sp_fulltext_database] @action = 'enable'` 16. `end` 17. `GO` 18. `--修改现有databases的排序规则` 19. `ALTER DATABASE [LayIM]` 20. `COLLATE Chinese_PRC_CI_AS` 21. `GO` 22. `--以下省略SQL脚本` 我们可以看出以上脚本,和windows下最大的不同是,数据文件路径FILENAME配置成Linux下的路径了,另外修改了数据库的排序规则,用简体中文的规则(对于Linux下来说,编码规则要特别强调,否则就容易出现中文乱码),为了避免在Linux查看SQL脚本出现中文乱码,建议sql脚本也用编辑器保存为UTF-8格式(windows下生成的脚本默认是ANSI/ASCII格式)。 其次,我们需要把启动SqlServer和初始化导入数据的批处理写到一个脚本中,如setup.sh: 1. `#!/bin/bash` 2. `set -e` 3. 4. `#设置语言为简体中文` 5. `/opt/mssql/bin/mssql-conf set language.lcid 2052` 6. `echo '1.启动mssql....'` 7. `#启动mssql` 8. `/opt/mssql/bin/sqlservr` 9. `sleep 3` 10. `ps -ef|grep sqlservr` 11. 12. `echo '2.开始导入数据....'` 13. `#导入数据` 14. `if [ -d /var/opt/mssql/data/LayIM.mdf ] ; then` 15. `echo '3.数据库已存在,中止导入....'` 16. `else` 17. `/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U "sa" -P "yourStrong(!)Password" -d "Database" -i "/home/mssql/schema.sql" -o /home/mssql/initsql.log` 18. `echo '3.导入数据完毕....'` 19. `fi` 20. 21. `#sleep 3` 22. `echo 'mssql容器启动完毕,且数据导入成功'` 23. 24. `tail -f /dev/null` 在这个脚本中,我们先设置了SqlServer的中文编码ID为2052(简体中文的ID号),然后启动sqlserver,导入sql脚本,最后通过 tail -f /dev/null来避免容器关闭前台(这是容器的机制,前台一关闭容器就会stop)。 有了以上两个脚本文件,我们就可以编制Dockerfile,将文件写到镜像中: 1. `FROM microsoft/mssql-server-linux:2017-latest` 2. 3. `#将所需文件放到容器中` 4. `COPY setup.sh /home/mssql/setup.sh` 5. `COPY LayIM.sql /home/mssql/schema.sql` 6. `RUN chmod +777 /home/mssql/setup.sh` 7. 8. `#设置容器启动时执行的命令` 9. `CMD ["sh", "/home/mssql/setup.sh"]` 4. Build镜像和生成容器 最后我们就可以Build镜像(进入到Dockerfile目录下) docker build -t fzfda-mssql:1.0 . 生成镜像后,就直接run(需要注意的是应该先创建卷目录mkdir -p /var/opt/mssql并赋写权限,然后是ACCEPT\_EULA授权为Y,sa密码要以和以上脚本保持统一,数据库端口配置正确): docker run --name fzfda-mssql -d --restart=unless-stopped -p 1433:1433 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -v /var/opt/mssql:/var/opt/mssql fzfda-mssql:1.0 5. 连接数据库 容器起的过程中就完成了数据初始化,连接后就能看到: ![70][] 我用的是Navicat工具连接数据库,默认连接sqlserver的端口是1433,如果不是1433,就需要配置端口了,注意端口和IP是用逗号分隔的(这点比较坑): ![70 1][] [https_hub.docker.com_r_microsoft_mssql-server-linux]: https://hub.docker.com/r/microsoft/mssql-server-linux/ [70]: /images/20221120/7c8801baf8ec4c419f8d6ae751cda569.png [70 1]: /images/20221120/295066dceb4547d8909c980a0f2e08f8.png
相关 通过Docker部署Linux版SqlServer 很多人不知道SqlServer还有Linux版的,微软官方于2016年就发布了SqlServer 2017 for Linux,使得SqlServer数据库可以运行在Linux 墨蓝/ 2022年12月30日 03:55/ 0 赞/ 202 阅读
相关 【Docker】通过Docker部署BookStack 为了给公司搭建个知识库重新做了选型,看过了好几个工具包括MkDocs、MM-markdown等,最后选用开源的BookStack作为知识库,原因有三: 1. BookSta 悠悠/ 2022年10月30日 12:25/ 0 赞/ 406 阅读
相关 【Docker】通过Docker部署MSSQL 之前一个项目人家要求用了全套的.NET体系包括页面的ASP还有后端的MSSQL。逼于无奈只能在本地模拟该环境来进行二次开发工作。而且本机是MBP,根本没有办法部署旧版的MSSQ 男娘i/ 2022年10月30日 12:25/ 0 赞/ 580 阅读
相关 【Docker】通过Docker部署Canal 阿里系一般都对开发者非常友好只需要稍微配置一下就可以用了,Canal也一样只需要简单的配置就可以部署使用。 1. 先在Docker Hub中下载v1.1.4版本的canal- 电玩女神/ 2022年10月30日 12:24/ 0 赞/ 772 阅读
相关 【Docker】通过Docker部署Kibana 直接使用Docker Hub提供的语句`docker pull kibana`获取镜像出现以下报错: Error response from daemon: mani 妖狐艹你老母/ 2022年10月30日 12:23/ 0 赞/ 308 阅读
相关 【Docker】通过Docker部署MySQL5 1. 从Docker Hub中拷贝pull的命令行 docker pull mysql:5.6.46 2. 镜像下载之后先执行一下镜像让其启动 Windows 向右看齐/ 2022年10月30日 11:25/ 0 赞/ 336 阅读
相关 【Docker】通过Docker部署Redis 1. 通过`docker pull redis:latest`下载最新的Redis镜像,这里就不再详细叙述,至于如何获取镜像可以上Docker Hub中查询选择下载版本 2. 末蓝、/ 2022年10月30日 06:30/ 0 赞/ 289 阅读
相关 Linux通过Docker部署OnlyOffice 一.环境要求 RAM: 4 GB+ CPU: 双核 2 GHz + Swap: 至少2 GB HDD: 至少有2GB的剩余空间 系统要求: 阳光穿透心脏的1/2处/ 2022年03月27日 02:50/ 0 赞/ 1211 阅读
相关 通过Docker部署Disconf 首先要安装Docker yum install docker -y ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_t ﹏ヽ暗。殇╰゛Y/ 2021年12月24日 00:37/ 0 赞/ 511 阅读
相关 Linux系统通过Docker部署gitlab(三个命令完成部署) Linux系统通过Docker部署gitlab(三个命令完成部署) 这里主要讲解docker部署gitlab的部署,如果您还没有安装docker那么请移步到 下面正式开... 朱雀/ 2021年07月15日 09:03/ 0 赞/ 12173 阅读
还没有评论,来说两句吧...