我想将springboot应用程序部署到运行mysql的docker容器中。应用程序必须在启动过程中连接到mysql,我正在使用ormlite库。尽管该过程在容器外运行良好,但一旦我尝试在容器内部署war,就会出现以下异常:java.sql.sqlexception:access denied for user'root'@'localhost'。mysql正在运行,端口3306在dockerfile中公开。下面是我的dockerfile:
FROM mydocker:latest1
MAINTAINER DockerFan version 1.0
ADD tomcat.sh /bin/tomcat.sh
ADD application1.war /etc/apache-tomcat-9.0.12/webapps/application1.war
ADD application2.war /etc/apache-tomcat-9.0.12/webapps/application2.war
EXPOSE 8080
EXPOSE 3306
ENTRYPOINT "/bin/tomcat.sh"
而脚本tomcat.sh是:
bash /etc/init.d/mysql start
sleep 10
bash /etc/apache-tomcat-9.0.12/bin/catalina.sh run
编辑
我编写了一个python脚本来检查mysql是否有问题,但是我成功地连接到了数据库。我还尝试了一个简单的jar,它只需要连接到db,但是错误仍然是一样的。下面是我使用的代码:
String databaseURL = "jdbc:mysql://localhost/db_name?user=root&password=password"
connection = new JdbcConnectionSource(databaseURL);
1条答案
按热度按时间7jmck4yq1#
似乎docker或jdbc(同样使用更新版本的jdbc连接器也没有什么帮助)不喜欢使用登录时使用的同一用户连接mysql。基本上,解决方案是在mysql数据库中创建一个新用户,并使用该用户连接到数据库。下面是我使用的代码: