You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Directus无法连接Azure SQL Server问题求助

排查步骤与解决方案

1. 移除.env文件中变量的双引号

你的.env文件中所有变量都带有双引号,Docker Compose读取时会将引号包含在实际值中,导致数据库密码、加密选项等参数错误。修改后的.env示例:

DB_CLIENT=mssql
DB_HOST=xxx.database.windows.net
DB_PORT=1433
DB_DATABASE=xxx
DB_USER=xxx
DB_PASSWORD=xxx
DB_OPTIONS__ENCRYPT=true

2. 验证Docker容器的出站IP是否在Azure SQL防火墙允许列表中

Docker默认桥接模式下,容器出站流量通常使用宿主机公网IP,但部分网络环境可能存在差异:

  • 临时测试:在Azure门户的SQL Server防火墙设置中添加0.0.0.0/0(允许所有IP,测试后立即移除以保证安全),重启容器验证连接。
  • 永久解决:获取容器实际出站IP并添加到防火墙白名单:
    1. 执行命令获取IP:docker run --rm curlimages/curl ifconfig.me
    2. 将返回的IP添加到Azure SQL防火墙允许列表。

3. 清理旧SQLite缓存数据

之前使用SQLite时,./database卷可能残留旧配置文件,干扰新数据库连接:

  • 停止容器:docker compose down
  • 删除./database目录下所有文件(注意备份重要数据)
  • 重启容器:docker compose up -d

4. 检查容器内环境变量加载情况

通过以下命令确认容器内数据库参数是否正确:

docker exec -it <directus-container-name> printenv | grep DB_

替换<directus-container-name>为你的容器名称(可通过docker ps查看),检查输出的DB_PASSWORD、DB_HOST等参数是否与预期一致。

5. 确认加密选项配置正确性

Azure SQL强制要求加密连接,确保DB_OPTIONS__ENCRYPT设置为布尔值true(不带引号),字符串形式的"true"会导致驱动无法正确识别加密要求,引发登录失败。

内容的提问来源于stack exchange,提问作者Vernon Joyce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:07:41