前面一篇文章介绍了这个问题:[error] 9#9: *44 connect() failed (111: Connection refused) while connecting to upstream,

上一篇文章中,以为解决了这个问题了,后来修改了新版本后发现还是出现了这个问题。

首先,前台(vue)、后台(springboot)、数据库(mysql) 的容器都正常启动没有报错。说明docker本身没有明显的错误。

然后,后台(springboot)没有任何日志,这个肯定是不对的,启动jar包至少会有欢迎日志。于是,在容器中,使用命令手动启动jar包看一看。看到如下的一些报错:

[main] ERROR com.alibaba.nacos.client.config.impl.ClientWorker - [fixed-172.20.0.4_8848] [sub-server] get server config exception, dataId=hoj, group=DEFAULT_GROUP, tenant= 
java.net.ConnectException: [NACOS HTTP-GET] The maximum number of tolerable server reconnection errors has been reached


 [main] ERROR c.alibaba.nacos.client.config.http.ServerHttpAgent - [NACOS ConnectException httpGet] currentServerAddr:http://172.20.0.4:8848, err : Connection refused (Connection refused) 


 [main] ERROR com.alibaba.nacos.client.config.impl.ClientWorker - [fixed-172.20.0.4_8848] [sub-server] get server config exception, dataId=hoj.yml, group=DEFAULT_GROUP, tenant= 
java.net.ConnectException: [NACOS HTTP-GET] The maximum number of tolerable server reconnection errors has been reached

这些报错指向nacos。搜索了一下,有人说是nacos的内存不够才会报这些错。于是在docker-compose.yml文件中增大了了nacos相关的内存配置。重新启动后发现还是报这些错。

于是方向来到nacos部分,看一下nacos的日志:

org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

....
com.mysql.cj.exceptions.CJException: Unknown database 'nacos'

发现nacos的报错指向了mysql。

于是打开mysql的容器,查看一下mysql的数据库

发现项目的数据库没有创建成功,只有默认的MySQL的几个数据库。

最终的问题找到,是mysql创建数据库的脚本除了问题,修改脚本后,重新执行流程,一切正常了。