.net5 webapi 部署docker 后无法连接到oracle数据库

部署过程不再赘述,主要按照下面操作:docker 发布.net 5 webapi
因为是windows 服务器,安装docker后,直接使用powershell 命令操作,也可以使用docker客户端操作。
我使用的是命令操作,主要是以下命令:
CD到发布的webapi文件夹下
然后创建镜像: 注意-t 后面是镜像名称,镜像名称后面加空格,然后再加“.” 。

  docker build -t rcaps .

在docker客户端如下所示
在这里插入图片描述
然后启动 ,–name后面是自己定义名称,-p是对外暴漏的端口号。

docker run --name rcaps_docker -p 8081:5001 -d rcaps

启动成功后,在docker 客户端 Containers 中如下。
在这里插入图片描述

启动成功后,可以直接点击端口号在浏览器中访问接口。但是问题来了,前面一切顺利,数据库无法联通,提示如下:

{
  "dataInfo": "RCSolution.Frame.Infrastructure.Exceptions.DataAccessException: 中文提示 :  连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:ORA-00604: error occurred at recursive SQL level 1\nORA-01882: timezone region not foundDbType=\"Oracle\";ConfigId=\"SysManager\".\r\nEnglish Message : Connection open error . ORA-00604: error occurred at recursive SQL level 1\nORA-01882: timezone region not foundDbType=\"Oracle\";ConfigId=\"SysManager\"\n ---> SqlSugar.SqlSugarException: 中文提示 :  连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:ORA-00604: error occurred at recursive SQL level 1\nORA-01882: timezone region not foundDbType=\"Oracle\";ConfigId=\"SysManager\".\r\nEnglish Message : Connection open error . ORA-00604: error occurred at recursive SQL level 1\nORA-01882: timezone region not foundDbType=\"Oracle\";ConfigId=\"SysManager\"\n   at SqlSugar.Check.Exception(Boolean isException, String message, String[] args)\n   at SqlSugar.AdoProvider.CheckConnection()\n   at SqlSugar.OracleProvider.GetCommand(String sql, SugarParameter[] parameters)\n   at SqlSugar.AdoProvider.GetDataReaderAsync(String sql, SugarParameter[] parameters)\n   at SqlSugar.QueryableProvider`1.GetDataAsync[TResult](KeyValuePair`2 sqlObj)\n   at SqlSugar.QueryableProvider`1._ToListAsync[TResult]()\n   at RCSolution.Frame.Core.Repository`1.GetAllAsync() in D:\\杉数\\杉数荣程APS\\Code\\CodeGit\\rcaps\\Service\\RCSolution.Frame.Core\\Repository\\Repository.cs:line 99\n   --- End of inner exception stack trace ---\n   at RCSolution.Frame.Core.Repository`1.GetAllAsync() in D:\\杉数\\杉数荣程APS\\Code\\CodeGit\\rcaps\\Service\\RCSolution.Frame.Core\\Repository\\Repository.cs:line 104\n   at RCSolution.Frame.Services.Sys.MoltenSteel.MoltenSteelService.GetAllUsers2() in D:\\杉数\\杉数荣程APS\\Code\\CodeGit\\rcaps\\Service\\RCSolution.Frame.Services\\Sys\\MoltenSteel\\MoltenSteelService.cs:line 32\n   at RCSolution.Frame.WebApi.Controllers.MoltenSteelsController.GetMoltenSteelMsg() in D:\\杉数\\杉数荣程APS\\Code\\CodeGit\\rcaps\\Service\\RCSolution.Frame.WebApi\\Controllers\\MoltenSteelsController.cs:line 70",
  "isSucceed": true,
  "message": null,
  "statusCode": 200
}

这里主要看日志中的第二个错误提示,如下ORA-01882: timezone region not foundDbType
查看了解到时因为配置docker时连接oracle数据库要设置时区
主要是在dockerfile中设置,添加一下环境变量:

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 

设置后,重启docker镜像,发现连接成功。如果还是错误,删掉现有镜像,重新拉取一个就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值