我正在尝试将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”]
答案 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帮助概述和可重复性。