Docker-Spring Boot应用程序与mysql的连接 [英] Docker - spring boot application connectivity with mysql

查看:75
本文介绍了Docker-Spring Boot应用程序与mysql的连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是docker的新手,正在尝试一些东西.创建了一个名为employee services的spring boot rest api.实际上,它从mysql数据库emp_db中获取数据.这是完美的工作.现在,我正在尝试对相同的东西进行泊坞窗处理.

应用程序属性

  spring.profiles.active = devspring.datasource.url = jdbc:mysql://localhost:3306/emp_dbspring.datasource.username = rootspring.datasource.password =密码spring.datasource.driver-class-name = com.mysql.jdbc.Driverspring.jpa.database-platform = org.hibernate.dialect.MySQL8Dialect 

我正在运行以下命令来拉出并配置mysql

  docker run -e MYSQL_ROOT_PASSWORD = pwd -e MYSQL_DATABASE = emp_db --name mysql_name mysql 

当我收到以下消息时,它会完美启动

  2021-02-08T09:08:46.0​​18218Z 0 [警告] [MY-011810] [服务器] --pid文件的不安全配置:路径中的位置'/var/run/mysqld'为所有OS用户均可访问.考虑选择其他目录.2021-02-08T09:08:46.0​​51985Z 0 [系统] [MY-010931] [服务器]/usr/sbin/mysqld:准备连接.版本:'8.0.23'套接字:'/var/run/mysqld/mysqld.sock'端口:3306 MySQL Community Server-GPL. 

但是当我开始服务时,我遇到了以下错误.

 启动ApplicationContext时出错.要显示条件报告,请在启用调试"的情况下重新运行您的应用程序.2021-02-08 09:11:38.235错误1 --- [main] o.s.boot.SpringApplication:应用程序运行失败org.springframework.beans.factory.BeanCreationException:在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]中创建名称为'entityManagerFactory'的bean时出错.嵌套的异常是javax.persistence.PersistenceException:[PersistenceUnit:默认]无法构建Hibernate SessionFactory.嵌套的异常是org.hibernate.exception.JDBCConnectionException:无法打开JDBC连接以执行DDL在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788)〜[spring-beans-5.3.3.jar!/:5.3.3]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609)〜[spring-beans-5.3.3.jar!/:5.3.3]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531)〜[spring-beans-5.3.3.jar!/:5.3.3]在org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:335)〜[spring-beans-5.3.3.jar!/:5.3.3]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)〜[spring-beans-5.3.3.jar!/:5.3.3]在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)〜[spring-beans-5.3.3.jar!/:5.3.3]在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)〜[spring-beans-5.3.3.jar!/:5.3.3]在org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159)〜[spring-context-5.3.3.jar!/:5.3.3]在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913 

解决方案

您需要公开端口以便能够从容器外部访问MySQL:

  docker run -e MYSQL_ROOT_PASSWORD = pwd -e MYSQL_DATABASE = emp_db -p 3306:3306 --name mysql_name mysql 

I am new to docker and trying something. Created a spring boot rest api with name employee services. It actually takes data from a mysql database emp_db. Which is working perfectly. Now I am trying to dockerize the same stuff.

application properties

spring.profiles.active=dev
spring.datasource.url=jdbc:mysql://localhost:3306/emp_db
spring.datasource.username=root
spring.datasource.password=pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

I am running below command to pull and configure mysql

docker run  -e MYSQL_ROOT_PASSWORD=pwd -e MYSQL_DATABASE=emp_db --name mysql_name mysql

It starts perfectly as I get below message

2021-02-08T09:08:46.018218Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2021-02-08T09:08:46.051985Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.23'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

but when I start service I am getting below error.

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-02-08 09:11:38.235 ERROR 1 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) ~[spring-beans-5.3.3.jar!/:5.3.3]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:609) ~[spring-beans-5.3.3.jar!/:5.3.3]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.3.jar!/:5.3.3]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.3.jar!/:5.3.3]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.3.jar!/:5.3.3]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.3.jar!/:5.3.3]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.3.jar!/:5.3.3]
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1159) ~[spring-context-5.3.3.jar!/:5.3.3]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913

解决方案

You need to expose the port to be able to access MySQL from outside the container:

docker run  -e MYSQL_ROOT_PASSWORD=pwd -e MYSQL_DATABASE=emp_db -p 3306:3306 --name mysql_name mysql

这篇关于Docker-Spring Boot应用程序与mysql的连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆