SQL Server Docker 发布方式有哪些

分类:编程技术 时间:2024-02-20 15:57 浏览:0 评论:0
0
本文主要介绍“SQL Server Docker 的发布方式有哪些”。在日常操作中,相信很多人对SQL Server Docker的发布方式存在疑问。小编查阅了各种资料,整理出了简单好用的方法。操作方法,希望能帮助您解答“发布SQL Server Docker有哪些方式”的疑惑!接下来就请跟随小编一起来学习吧!

1 构建SQL Server Docker版本【数据库文件内置到容器镜像中】的步骤如下:

1 拉取一条原始sql服务器docker镜像

该镜像来自微软在Docker Hub上提供的初始容器。

2 编写第一版数据库对象创建脚本

SQL脚本:

CREATE DATABASE CRM GO USE CRM GO CREATE TABLE dbo.Account( AccountId INT IDENTITY(1,1), AccountName NVARCHAR(200) )

另存为 DBSchemaInit.sql

3 构建新的容器镜像

构建自定义容器镜像,最重要的是编写Dockerfile。

[root@centos00 v1]# cat DockerfileFROM microsoft/mssql- server-linuxMAINTAINER Lenis Huang "huangyun_122@ 163.com"ENV ACCEPT_EULA=YENV SA_PASSWORD=1QAZ2WSX3EDCEXPOSE 1433

最终构建成功:

[root@centos00 v1]# docker build - t=sqlserver/v1 .将构建上下文发送到 Docker 守护进程 3.584 kBStep 1/5 : FROM microsoft/mssql-server-linux ---> b2b20452a15bStep 2/5 : MAINTAINER Lenis Huang "huangyun_122@163.com" -- -> 运行在 532a5f141f11 中 ---> 182a1a9aed84 删除中间容器 532a5f141f11Step 3/5 : ENV ACCEPT_EULA Y ---> 在 c72d741f2f8e 中运行 ---> ee590cf78e2b 删除中间容器 c72d741f2f8eStep 4/5 : ENV SA_PASSWORD 1QAZ2WSX3EDC ---> 在 67559621fd8d 中运行 - -- > 7d92d6155c25删除中间容器 67559621fd8dStep 5/5 : EXPOSE 1433 ---> 在 2bb8ee0440a4 中运行 ---> 67f770bfdacd 删除中间容器atee 容器 2bb8ee0440a4成功构建 67f770bfdacd[root@centos00 v1]# docker imagesREPOSITORY CREATED SIZEsqlserver/v1latest 67f770bfdacd 36秒前1.44GB

至此,一个新的可用于项目部署的sql server docker已经创建完成建造的。

[root@centos00 DockerNginx]# docker psCONTAINER ID                                                                                                             端口                                                                                                                                                                                                                                                 NAMESf29258559cb4        sqlserver/v1                                  nbsp;大约一分钟前 59 秒 0.0.0.0:32793->1433/tcp dev_sqlv1


从 docker ps 执行结果可以看到 sqlv1 是运行镜像容器即可连接到对应的1433端口容器中的SQL Server服务通过本机的32793端口。

在Dev、STG、UAT环境中,它们都是基于sqlv1的,这样应用程序就连接到sqlv1容器中运行的数据库。如果开发和测试过程中出现问题,可以使用sqlv1重建一个新的容器来运行数据库。

4 开发新版本的数据库应用,应用到sqlv1镜像,然后构建sqlv2镜像

# DockerfileFROM sqlserver/v1MAINTAINER Lenis Huang "huangyun_122@163.com “ENV ACCEPT_EULA =YENV SA_PASSWORD=1QAZ2wsx3EDC.ENV PATH=${PATH}:/opt/mssql/bin:/opt/mssql-tools/binRUN mkdir sqlfilesCOPY DBSchemaInit.sql ./sqlfiles/DBSchemaInit.sqlCOPY setup-database.sh 。 /sqlfiles/ setup-database.shCOPY entrypoint.sh ./sqlfiles/entrypoint.shRUN chmod a+x ./sqlfiles/setup-database.shRUN chmod a+x ./sqlfiles/entrypoint.shCMD bash ./sqlfiles/entrypoint.sh #entrypoint.shecho '开始数据库设置'./sqlfiles/setup-database.sh &/opt/mssql/bin/sqlservr# setup-database.shecho '数据库正在启动,请稍候。 ..'sleep 45secho '尝试连接到容器中的数据库并创建示例数据库...'/opt/mssql-tools/bin/sqlcmd -S localhost,1433 -U sa -P 1QAZ2wsx3EDC。 -d 大师 -i 。 /sqlfiles/DBSchemaInit.sqlecho '样例数据库已创建!'

作为数据库部署,每次构建新容器时,都需要重点编写增量部署脚本来替换第一个数据库初始化脚本DBSchemaInit.sql。

5 这个循环实现持续集成和发布

在这种发布过程中,要考虑的问题是生产环境中如何发布。

根据docker数据库发布流程,可以发现和避免的问题有:

数据库发布脚本的一致性。

dev、stg、uat、prod中使用同一套脚本,如果有ar脚本如有错误,可以及时调整。单代生产环境不会出现这种情况,因为dev、stg、uat测试环境发布时,没有及时检查脚本逻辑错误,或者因为环境环境的影响,比如大家创建数据库随意修改dev、stg、uat环境中的对象,导致发布脚本本身无法验证正确性和完整性。

数据库发布的速度。

最初,需要 dev、stg、uat 和 prod 来重新部署新服务器。之后,应用数据库发布脚本。现在你只需要尽力构建一个正确且可用的 docker 镜像即可。基于此镜像,可以同时部署多个平台。应用程序只需要指定对应的doker名称即可。在多集群环境下,这种部署方式给操作和维护带来了极大的方便。租赁。还记得 Linux ssh shell 吗?远程无密码登录的发明是为了让运维可以在多台服务器之间穿梭,而无需在每台服务器上安装软件。在大数据成为常态、时不时需要数千台集群服务器的世界里,docker 可以被视为一剂良药。

这个过程需要考虑的是生产环境的发布略有不同。相同的发布脚本,但数据库文件位于容器外部。所以严格来说,你不能通过这种方式释放生产环境。数据库文件必须自始至终与容器隔离。构建容器时,首先将数据库文件附加到镜像中,然后应用发布脚本,最后构建容器镜像的发布版本。这样的构建脚本(Dockerfile)是可移植的。

2 构建 SQL Server Docker 版本的步骤 [数据库文件为 free from 容器镜像]如下:

有了上面的经验,这次就简单多了,就是在 Dockerfile 中添加了 Volume 命令的修改。本质上,Volume中的磁盘空间是用来存储数据库文件的。

唯一的区别是dockerfile的写入以及指定挂载的本地文件

# Dockerfile FROM sqlserver/v1MAINTAINER Lenis Huang "huangyun_122@163.com"ENV ACCEPT_EULA=YENV SA_PASSWORD= 1QAZ2wsx3EDC .ENV PATH=${PATH}:/opt/mssql/bin:/opt/mssql-tools/binRUN mkdir sqlfilesCOPY DBSchemaInit.sql./sqlfiles/DBSchemaInit.sqlCOPY setup-database.sh ./sqlfiles/setup-database.shCOPY Entrypoint.sh ./sqlfiles/entrypoint.shRUN chmod a+x ./sqlfiles/setup-database.shRUN chmod a+x ./ sqlfiles/entrypoint.shVOLUME /sql/dataCMD bash ./sqlfiles/entrypoint.sh

添加VOLUME指令以指定所有挂载的本地文件都挂载在/sql/data上。

[root@centos00 v4]# mkdir -p /sql/data[root@centos00 v4]# docker run-p 1433 --rm --name=dev_sqlv5 -v sqlvolume:/sql/data sqlserver /v5[root@centos00 data]# docker 卷检查 sqlvolume[ { "Driver": "local", "Labels": null, " Mountpoint": "/var/lib/docker/volumes/sqlvolume/_data","Name": "sqlvolume", "Options": {}, "Scope": "local" }]

下在 sqlvolume 指定的目录中,我们可以看到任何放置在 docker/sql /data 目录下的文件。当然,我们也可以自己创建一个卷并挂载。

关于“发布SQL Server Docker有哪些方式”的研究就到此结束,希望能解决大家的疑惑。理论与实践相结合,能够更好的帮助大家学习,去尝试吧!如果您想继续了解更多相关知识,请继续关注网站。小编会继续努力,给大家带来更多实用的文章!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > SQL Server Docker 发布方式有哪些

用户评论