
flcdrg/wait-for-mssql本Docker镜像是一个轻量级脚本工具,用于等待Microsoft SQL Server实例完全准备好接受连接。当SQL Server运行在容器环境中时,容器可能显示"已启动"状态,但SQL Server实际仍在后台加载数据库,此时连接数据库会失败。该工具通过检查数据库上线状态,确保在SQL Server及所有数据库完全就绪后才允许后续操作。
通过docker run命令运行镜像,需提供连接SQL Server的必要参数(如主机地址、认证信息等)。镜像会持续检查SQL Server状态,直至所有数据库上线或超时退出。
| 环境变量名 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|
SQLSERVER_HOST | SQL Server实例主机地址 | 是 | - |
SQLSERVER_PORT | SQL Server端口 | 否 | 1433 |
SQL_USER | 连接SQL Server的用户名 | 是 | - |
SQL_PASSWORD | 连接SQL Server的密码 | 是 | - |
DATABASE_NAME | 目标数据库名称(留空检查所有) | 否 | 所有数据库 |
WAIT_TIMEOUT | 最大等待时间(秒) | 否 | 300 |
CHECK_INTERVAL | 状态检查间隔(秒) | 否 | 5 |
bashdocker run --rm \ -e SQLSERVER_HOST=sqlserver-container \ -e SQLSERVER_PORT=1433 \ -e SQL_USER=sa \ -e SQL_PASSWORD=YourStrong!Passw0rd \ -e DATABASE_NAME=MyAppDB \ -e WAIT_TIMEOUT=600 \ your-registry/wait-for-mssql:latest
在多容器环境中,可作为依赖服务的前置检查:
yamlversion: '3.8' services: # SQL Server容器 sqlserver: image: mcr.microsoft.com/mssql/server:latest environment: - ACCEPT_EULA=Y - SA_PASSWORD=YourStrong!Passw0rd ports: - "1433:1433" # 等待SQL Server就绪 wait-for-sql: image: your-registry/wait-for-mssql:latest depends_on: - sqlserver environment: - SQLSERVER_HOST=sqlserver - SQLSERVER_PORT=1433 - SQL_USER=sa - SQL_PASSWORD=YourStrong!Passw0rd - DATABASE_NAME=MyAppDB - WAIT_TIMEOUT=600 # 依赖数据库的应用服务 app-service: build: ./app depends_on: wait-for-sql: condition: service_completed_successfully environment: - DB_HOST=sqlserver - DB_NAME=MyAppDB
0:SQL Server及目标数据库已成功就绪1:等待超时(超过WAIT_TIMEOUT仍未就绪)2:连接SQL Server失败(如认证错误、网络不可达)3:参数配置错误(如缺少必填环境变量)

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务