开发基于 Docker 的 .NET 和 .NET Core 应用
1. 容器中数据库的运行
当容器启动时,如果数据库目录为空,容器中就没有 NerdDinner 数据库,SqlPackage 会生成一个包含一系列 CREATE 语句的脚本,用于部署新数据库。若数据库目录包含文件,则会附加现有的数据库,此时 SqlPackage 会生成一个包含 ALTER 和 CREATE 语句的脚本,使数据库与 Dacpac 保持一致。
此步骤生成的 deploy.sql 脚本会创建新的架构或对旧架构进行更改以升级它,两种情况下最终的数据库架构是相同的。最后,PowerShell 脚本执行 SQL 脚本,并传入数据库名称、文件前缀和数据路径的变量:
$SqlCmdVars = "DatabaseName=NerdDinner", "DefaultFilePrefix=NerdDinner",
"DefaultDataPath=$data_path", "DefaultLogPath=$data_path"
Invoke-Sqlcmd -InputFile deploy.sql -Variable $SqlCmdVars -Verbose
SQL 脚本运行后,容器中会存在一个具有 Dacpac 中建模架构的数据库,该 Dacpac 是从 Dockerfile 构建阶段的 SQL 项目构建而来的。数据库文件位于预期的位置,使用预期的名称,因此如果用同一镜像的另一个容器替换此容器,新容器将找到现有数据库并附加它。
现在我们有一个可用于新部署和升级的镜像。开发人员在处理某个功能时,可
超级会员免费看
订阅专栏 解锁全文
29

被折叠的 条评论
为什么被折叠?



