)
Docker实验室将传统ASP.NET应用容器化第三部分前言在现代应用开发中容器化技术已经成为不可或缺的一部分。本文是Docker实验室系列教程的第三部分将详细介绍如何将传统的ASP.NET WebForms应用作为Docker容器运行并解决其数据库依赖问题。容器化架构概述在前两部分中我们已经完成了应用的容器化镜像构建。现在我们需要考虑应用的运行时架构。如下图所示我们的应用需要连接SQL Server数据库值得注意的是Docker的网络栈提供了灵活的连接方式我们可以选择连接非容器化的远程SQL Server实例使用Docker容器运行SQL Server数据库容器化方案本实验采用了Entity Framework的Code-First开发模式这意味着应用在首次运行时能够自动创建所需的数据库结构。这为我们提供了极大的便利因为我们可以直接启动一个空的SQL Server容器让应用自行初始化数据库。SQL Server Express容器Microsoft官方提供了适用于Windows的SQL Server Express Docker镜像。Express版本非常适合开发环境和小型生产环境当前存储限制为10GB。使用Docker运行SQL Server Express的优势在于每个数据库可以运行在独立的容器中资源隔离性好部署简单启动SQL Server Express容器的命令如下docker run --detach --publish 1433:1433 --env sa_passwordd0ck3r_Labs! --env ACCEPT_EULAY --name sql-server microsoft/mssql-server-windows-express参数说明--detach: 后台运行容器--publish 1433:1433: 将容器内的1433端口映射到主机--env: 设置环境变量包括SA密码和许可协议接受--name: 为容器指定名称便于网络通信运行ASP.NET WebForms应用启动Web应用容器同样简单docker run -d -p 80:80 --name web dockersamples/modernize-aspnet-web:v1此时使用docker ps命令可以看到两个运行中的容器SQL Server和Web应用。访问应用由于Windows容器的网络特性我们需要先获取容器的IP地址docker inspect --format {{ .NetworkSettings.Networks.nat.IPAddress }} web得到的IP地址如172.20.250.65即为应用的访问地址。首次访问可能会有延迟因为IIS需要启动工作进程应用需要初始化数据库功能验证应用主要包含两个功能产品介绍首页用户注册表单注册表单收集用户基本信息数据验证我们可以通过多种方式验证数据是否成功存储使用SQL客户端工具连接数据库在容器内执行SQL查询无需额外安装客户端docker exec sql-server powershell -Command Invoke-SqlCmd -Query SELECT * FROM Prospects -Database ProductLaunch查询结果将显示所有注册记录验证了应用的完整功能。技术要点总结依赖管理明确应用对SQL Server的依赖关系自动化部署通过Docker实现了应用部署的标准化环境一致性确保开发、测试和生产环境的行为一致可移植性镜像可以在任何支持Docker的环境中运行后续改进方向虽然我们已经实现了应用的容器化但仍有一些可以优化的地方依赖管理自动化使用Docker Compose定义多容器应用镜像分发通过镜像仓库实现团队共享性能优化引入异步消息处理机制将在第四部分介绍通过本部分的实践我们已经成功将传统ASP.NET应用迁移到Docker平台为后续的现代化改造奠定了坚实基础。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考