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容器首次启动不会自动生成业务库,需要手动创建:- 执行
docker exec -it mssql bash进入数据库容器 - 执行以下命令创建数据库:
/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
相关产品推荐
相关产品推荐

