带有springboot和mysql的Docker链接和运行问题

时间:2018-09-19 06:43:00

标签: mysql docker spring-boot

我正在尝试将spring-boot应用程序(连接到mySQL数据库)作为docker容器(因此基本上将2个容器链接在一起)运行。

但是由于mySQL docker容器不同,所以在链接这两个容器方面我遇到了困难。我尝试将application.properties外部化,但随后无法通过将参数传递给外部应用程序属性来运行它。

有没有办法有效地连接这两个容器?<​​/ p>

这是我的应用程序属性和dockerfile

application.properties:

spring.application.name=customer-service
server.port:8203

#spring.datasource.url=jdbc:mysql://demo-mysql:3306/bankbotdb?autoReconnect=true&useSSL=false
spring.datasource.url=jdbc:mysql://localhost:3306/bankbotdb?autoReconnect=true&useSSL=false
spring.datasource.username=***
spring.datasource.password =*******
...

Dockerfile:

FROM openjdk:8
ADD target/nlp-bot-customer-service-0.0.1-SNAPSHOT.jar /opt/micro-services/
ADD config/application.properties /opt/micro-services/config/
WORKDIR /opt/micro-services/
EXPOSE 8203
ENTRYPOINT [“java”, “-jar”,”nlp-bot-customer-service-0.0.1-SNAPSHOT.jar — spring.config.name=application — spring.config.location=classpath:/op/micro-services/config”]

1 个答案:

答案 0 :(得分:0)

您的问题出在您的application.properties:spring.datasource.url=jdbc:mysql://localhost:3306/bankbotdb?autoReconnect=true&useSSL=false

在docker环境中,除非您使用不推荐的主机模式,否则您将在使用localhost时引用容器本身(在本例中为“ bot-customer-service”容器)。

要解决此问题,您应该将行更改为spring.datasource.url=jdbc:mysql://demo-mysql:3306/bankbotdb?autoReconnect=true&useSSL=false(根据您的评论)。将demo-mysql更改为启动时调用的mysql容器。

在建议您编排服务时,我建议使用docker-compose帮助概述和可重复性。