当前位置: 首页 > 知识库问答 >
问题:

使用Docker-Compose运行多个Spring-Boot应用程序

艾焱
2023-03-14
server.port=8085
spring.jpa.show-sql=true
spring.jackson.serialization.write-dates-as-timestamps=false
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306 /webDatabase?autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=my-secret-pw
FROM openjdk:8-jdk-alpine
ADD target/web-spring-boot.jar web-spring-boot.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar", "web-spring-boot.jar"]
version: '3'
services:
  web:
    build: ./web
    ports:
    - "8085:8085"
    depends_on:
    - "database"
  solver:
    build: ./solver
    ports:
    - "8095:8095"
    depends_on:
    - "database"
  database:
    image: "mysql:latest"
    ports:
    - "3306:3306"
    environment:
    - MYSQL_ROOT_PASSWORD=my-secret-pw
    - MYSQL_DATABASE=webDatabase
    healthcheck:
            test: "/usr/bin/mysql --user=root --password=my-secret-pw --execute \"SHOW DATABASES;\""
            interval: 10s
            timeout: 20s
            retries: 10
volumes:
  logvolume01: {}

solver_1 2019-01-04 22:55:15.698警告1---[main]O.H.Engine.jdbc.spi.sqlexceptionHelper:SQL错误:0,sqlstate:08s01 solver_1 2019-01-04 22:55:15.698错误1---[main]O.H.Engine.jdbc.spi.sqlexceptionHelper:通信链接失败solver_1 solver_1上次成功发送到服务器的数据包是0毫秒前。驱动程序没有从服务器接收到任何数据包。

我在配置中缺少什么?使用组合运行时是否忽略application.properties

共有1个答案

谭池暝
2023-03-14

Spring-Boot应用程序尝试连接到localhost:3306。只要它们不在容器内运行,这就可以正常工作。

当在容器内运行时,也会尝试针对localhost建立连接(但这次是在spring-boot docker容器内)。这显然是失败的,因为在您的spring-boot容器中没有运行mysql。

mysql服务可以通过别名(数据库)在docker网络中访问。

spring.datasource.url=jdbc:mysql://database:3306/webDatabase?autoReconnect=true&useSSL=false
 类似资料:
  • 问题内容: 我正在使用在3个不同的docker上运行的应用程序: 第一个是可通过REST API调用的服务器HTTP 第二个是rabbitmq 第三个是工人 整个应用程序使用 真的很简单:) 我想使其具有可伸缩性,并且独立于其他应用程序运行整个应用程序的多个实例(3个docker映像),然后放置一个负载平衡器,例如它将重定向到其中一个应用程序。 我看到我可以使用它,但是问题是可以缩放容器,但是我真

  • PROJECT_B中的docker-compose.yml如下所示: 每个项目都可以单独运行,工作良好。但是,如果我们想要更改PROJECT_A和PROJECT_B之间的api,我们需要运行这两个项目,并将它们链接在一起以测试我们的代码。现在我们想写一个开发工具包项目,可以运行这两个项目,并链接他们,如果需要。最好的方法是什么?

  • 我正在尝试在Tomcat上部署多个spring boot web应用程序。所有应用程序都有相同的application.properties。如何拆分在Tomcat上运行的不同应用程序的配置文件。

  • 我有一个很奇怪的问题。我正在尝试通过Docker运行一个Spring Boot应用程序。下面是我的步骤。 1)我正在创建一个DockerFile。 在这个文件中,我正在安装Java。我还在使用名为spring-boot-web-0.0.1-snapshot.jar的应用程序的jar文件。 您可以看到生成了一个容器。但当我打字的时候 container_id不可见,当我在浏览器中键入localhos

  • 我有一个多Maven模块Spring Boot项目,具有以下结构: webservices和backend都是单独的Spring Boot应用程序(它们生成一个jar文件,我用它来启动它们),它们依赖于commons模块。因此,我将commons作为一个依赖项包含在webservices和后端的pom中。xml。 我对启动我的应用程序没有什么疑问。 如何在单个JVM中启动后端和webservice

  • 我有这个春靴应用程序。使用Quartz(一个功能丰富的开源作业调度库,几乎可以集成在任何Java应用程序中)在每月10日执行作业 在配置包中: 请参考一下,我有另一个类似的应用程序,没有,而且工作正常: