如何搭建带可登录账户的Windows Docker容器版SQL Server
解决方案:手动构建带可登录账户的Windows Docker容器版SQL Server
针对Linux SQL容器不支持FileStream、官方Windows SQL镜像下架的问题,以下是基于mcr.microsoft.com/windows/servercore手动构建带可登录SA账户的SQL Server 2019 Core容器的完整方案。
一、完整Dockerfile
# 使用适配SQL Server 2019的Windows Server Core基础镜像 FROM mcr.microsoft.com/windows/servercore:ltsc2019 # 设置环境变量:SA密码、许可协议、版本标识 ENV SA_PASSWORD="YourStrong!Passw0rd" ENV ACCEPT_EULA="Y" ENV SQL_PID="Developer" # 下载SQL Server 2019 Core官方安装包 RUN Invoke-WebRequest -Uri "https://download.microsoft.com/download/7/c/1/7c14e92e-bdcb-4f89-b7cf-93543e7112d1/SQLServer2019-CORE-x64-ENU.exe" -OutFile "C:\SQLServerInstall.exe" # 静默安装SQL Server 2019 Core,启用混合认证并配置SA账户 RUN C:\SQLServerInstall.exe /Q /ACTION=Install /FEATURES=SQLEngine /INSTANCENAME=MSSQLSERVER /SECURITYMODE=SQL /SAPWD=$env:SA_PASSWORD /SQLSVCACCOUNT="NT AUTHORITY\SYSTEM" /SQLSYSADMINACCOUNTS="BUILTIN\Administrators" /TCPENABLED=1 /IACCEPTSQLSERVERLICENSETERMS # 删除安装包以减小镜像体积 RUN Remove-Item -Path C:\SQLServerInstall.exe -Force # 复制启动脚本 COPY start-sql.ps1 C:\start-sql.ps1 CMD ["powershell.exe", "-File", "C:\\start-sql.ps1"]
二、配套启动脚本(start-sql.ps1)
创建同目录下的start-sql.ps1文件,内容如下:
# 启动SQL Server服务 Start-Service MSSQLSERVER # 保持容器运行(防止服务启动后容器立即退出) while ($true) { Start-Sleep -Seconds 30 if (-not (Get-Service MSSQLSERVER).Status -eq 'Running') { exit 1 } }
三、关键配置说明
- 参数兼容性:SQL Server 2019 Core支持
SECURITYMODE=SQL(启用混合认证)、SAPWD(设置SA密码)等参数,规避了2022开发者版参数不兼容的问题。 - SA账户生效:安装阶段直接配置SA密码并将内置管理员组加入系统管理员列表,确保容器启动后SA账户可直接登录。
- 容器存活机制:启动脚本通过循环检查服务状态,避免SQL Server启动完成后容器自动退出。
四、构建与运行命令
- 构建镜像:
docker build -t sql-server-2019-win-test .
- 启动测试容器:
docker run -d -p 1433:1433 --name sql-test-container sql-server-2019-win-test
五、登录验证
使用sqlcmd或SSMS进行连接测试:
sqlcmd -S localhost,1433 -U SA -P "YourStrong!Passw0rd"
连接成功后即可执行SQL命令,验证数据库服务正常运行。
内容的提问来源于stack exchange,提问作者Ben Bowen
相关产品推荐
相关产品推荐

