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

Docker部署CodeIgniter3项目无法连接SQL Server数据库问题求助

解决方案

你遇到的连接失败问题由多处配置错误共同导致,按以下步骤修改即可解决:

  • 修正CodeIgniter数据库配置
    MSSQL容器默认管理员账号为sa,而非你配置的admin,对应密码为你在docker-compose中设置的Testing123,同时可将端口拆分配置更符合CI3规范,修改后的database.php对应配置如下:

    $db['default'] = array(
         'dsn'  => '',
         'hostname' => 'db',
         'port' => '1433',
         'username' => 'sa',
         'password' => 'Testing123',
         'database' => 'ciapp',
         'dbdriver' => 'sqlsrv',
         // 其余原有配置保持不变
    );
    

    如果你确实需要使用admin账号,可在数据库创建后添加对应账号并授权。

  • 创建ciapp数据库
    MSSQL容器首次启动不会自动生成业务库,需要手动创建:

    1. 执行docker exec -it mssql bash进入数据库容器
    2. 执行以下命令创建数据库:
    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Testing123 -Q "CREATE DATABASE ciapp"
    

    如需创建admin账号,继续执行以下SQL:

    USE ciapp
    GO
    CREATE LOGIN admin WITH PASSWORD = 'admin', CHECK_POLICY = OFF
    GO
    CREATE USER admin FOR LOGIN admin
    GO
    EXEC sp_addrolemember 'db_owner', 'admin'
    GO
    
  • 移除Dockerfile冗余配置
    Dockerfile末尾的RUN service apache2 restart是构建阶段执行的临时操作,容器启动时不会生效,直接删除该行即可,不影响功能。

  • 处理MSSQL启动延迟
    depends_on仅保证容器启动顺序,MSSQL服务完全就绪需要10~30秒,首次启动完成后等待2分钟再访问应用测试即可。若需自动等待,可给app服务添加启动脚本检测数据库就绪后再启动apache。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:06:04